画像




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

  • 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」にアクセスしページ表示

画像







Q&A