int i = 90
char x = "変数" とか、多分プログラミングの「さしすせそ」。
ですが、Djangoでこれのやり方がよく分からなかったので色々調べました。
備忘です。
環境
- python : 3系
- Django : version 3.0.2
用例
ex)use case
かなりどうでも良い思いつきの用例です。
細かいことは考えず、
今回nemeアプリというのを作ってテーブル項目(テーブル名:FullName)に氏名を持っているとします。
ついでだから、「つのだ☆ひろ」みたいに氏名の間に☆を入れようと思いつきました。
じゃあ、引数に☆を持たせて実装しよう。という流れです。
contextというのをViewsに書いて引数を設定し、templateで引数を受け取って画面に表示させます。
ソース
models
from django.db import models class FullName(models.Model) firstName = models.CharField( verbose_name = '名', max_length=10, ) familyName = models.CharField( verbose_name = '氏', max_length=10, )
views
from django.shortcuts import render class FullNameListView(ListView): model = FullName, template_name = 'name/fullname_list.html' #使用するテンプレートを指定 def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["star"] = "☆" return context
今回重要なのは、def get_context_data〜return contextのところですね。
context = super()でFullNameListViewクラスを上書き?オーバーライドしてる感じかと。
context["~"]で変数を作って、値を代入。
returnで変数を戻す(送る?)という感じかと思います。
urls
from django.contrib import admin from django.urls import path from name.views import FullNameListView urlpatterns = [ path('fullname', FullNameListView.as_view(), name="fullname"), path('admin/', admin.site.urls),
いつも通りパスを通します。
template (fullname_list.html)
<div class="fullname"> {{firstName }} {{star}} {{familyName}} </div>
テンプレートに{{~}}で挟んで項目名(引数)を書けば、「苗字☆名前」のように表示される。
この辺りの受け渡しがなかなかややこしいな。というのが実感です。