ビューとテンプレートを設定するメモ。
- 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」にアクセスしページ表示