dayjournal memo

Total 975 articles!!

Django #004 – ビュー・テンプレート設定

Yasunori Kirimoto's avatar

画像



ビューとテンプレートを設定するメモ。

  • Python v3.6.0
  • Django v2.2.1


URLディスパッチャを設定


/sample/urls.py

from django.urls import path
#ビューインポート
from . import views

app_name = 'sample'
urlpatterns = [
    #ビューのindex関数読み込み
    path('', views.index, name='index'),
    #ビューのメイン・サブリスト関数読み込み(項目名で動的に切り替え)
    path('mainlist/<str:listname>/', views.main_list, name='mainlist'),
    path('sublist/<str:listname>/', views.sub_list, name='sublist')
]


ビューを設定


/sample/views.py

from django.http import HttpResponse
from django.shortcuts import render
#モデルインポート
from .models import MainList
from .models import SubList

def index(request):
    #/sampleに表示する文字列設定
    return HttpResponse("サンプルページ!!")

def main_list(request, listname):
    #メインリスト取得
    mainlist = MainList.objects.filter(title=listname)
    context = {
        'title': listname,
        'mainlist': mainlist
        }
    return render(request, 'sample/main_list.html', context)

def sub_list(request, listname):
    #サブリスト取得
    sublist = SubList.objects.filter(title=listname)
    context = {
        'title': listname,
        'sublist': sublist
        }
    return render(request, 'sample/sub_list.html', context)


テンプレートファイルを手動で追加


画像


/sample/templates/base.html

{% load static %}
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    {% block content %}{% endblock %}
</body>
</html>

/sample/templates/sample/main_list.html

{% extends "base.html" %}

{% block title %}パラメータ - {{ title }}{% endblock %}

{% block content %}
<h3>パラメータ - {{ title }}</h1>

{% for main in mainlist %}
    <p>項目名: {{ main.title }}</p>
    <p>日付: {{ main.datetime }}</p>
{% endfor %}
{% endblock %}

/sample/templates/sample/sub_list.html

{% extends "base.html" %}

{% block title %}パラメータ - {{ title }}{% endblock %}

{% block content %}
<h3>パラメータ - {{ title }}</h1>

{% for sub in sublist %}
    <p>メインリスト: {{ sub.mainlist }}</p>
    <p>項目名: {{ sub.title }}</p>
    <p>総数: {{ sub.totalnum }}</p>
{% endfor %}
{% endblock %}


簡易サーバー起動

python manage.py runserver

http://127.0.0.1:8000/sample/mainlist/sample01」にアクセスしページ表示

画像


http://127.0.0.1:8000/sample/sublist/sample001」にアクセスしページ表示

画像



book

Q&A