PythonのWebアプリケーションフレームワーク”Django”について無料で学習します。
今回は”ListView”クラスについて学習します。
“ListView”クラスは継承する事によってモデルクラスのデータをリスト(一覧)形式で表示する事ができます。
準備
※仮想環境”venv”にて進めます。
環境
環境 | version | 備考(コマンド) |
Rocky Linux | 8.4 | cat /etc/redhat-release |
Python | 3.6.8 | python -V |
Django | 3.2 | django-admin –version |
開発
urls
path("", views.Index.as_view(), name="index"),
orderPro/orderApp/urls.py
from django.urls import path
# view.pyをインポート
from . import views
# アプリ名を定義
app_name = "App"
# path(呼び出しアドレス, viewの呼び出す関数, path名)
urlpatterns = [
path("", views.Index.as_view(), name="index"),
]
views
ListViewクラスを継承します。
models.userTradeクラスを登録します。
model = models.userTrade
orderPro/orderApp/views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import ListView
from . import models
# 受注一覧
class Index(ListView):
model = models.userTrade
# レコード情報をテンプレートに渡すオブジェクト
context_object_name = "user_list"
# テンプレートファイル連携
template_name = "AppHTML/index.html"
Template
モデルから渡したオブジェクトをfor文で1レコードずつ取得する 。
{% for userlist in user_list %}
取得したレコードのフィールドを表示する。
{{ userlist.name }}
orderPro/Template/AppHTML/index.html
{% extends "AppHTML/header.html" %}
{% block content_block %}
<h2>受注一覧</h2>
<table class="table">
<thead>
<tr>
<th>ユーザー名</th>
<th>受注参照</th>
<th><a href="{% url 'userTradeCreate' %}">ユーザー新規登録</a></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
{% for userlist in user_list %}
<tr>
<td>{{ userlist.name }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="container">
<br>
</div>
{% endblock %}