Django 模板變數
模板變數
在 Django 模板中,你可以透過將變數放在 {{ }}
括號內來渲染它們。
在檢視中建立變數
上面的例子中的變數 firstname
是透過檢視傳送到模板的。
views.py
:
from django.http import HttpResponse
from django.template import loader
def testing(request):
template = loader.get_template('template.html')
context = {
'firstname': 'Linus',
}
return HttpResponse(template.render(context, request))
執行示例 »
正如你在上面的檢視中看到的,我們建立了一個名為 context 的物件,並用資料填充它,然後將其作為第一個引數傳送到 template.render()
函式中。
在模板中建立變數
你也可以直接在模板中使用 {% with %}
模板標籤來建立變數。
變數在 {% endwith %}
標籤出現之前都是可用的。
示例
templates/template.html
:
{% with firstname="Tobias" %}
<h1>Hello {{ firstname }}, how are you?</h1>
{% endwith %}
執行示例 »
你將在下一章中學習更多關於 模板標籤 的知識。
來自模型的資料
上面的例子展示了一種在模板中建立和使用變數的簡單方法。
通常,你想在模板中使用的大部分外部資料都來自模型。
我們在前面的章節中建立了一個名為 Member
的模型,我們將在本教程的後續章節的許多示例中使用它。
要從 Member
模型獲取資料,我們必須在 views.py
檔案中匯入它,並在檢視中提取資料。
members/views.py
:
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from .models import Member
def testing(request):
mymembers = Member.objects.all().values()
template = loader.get_template('template.html')
context = {
'mymembers': mymembers,
}
return HttpResponse(template.render(context, request))
現在我們可以在模板中使用這些資料了。
templates/template.html
:
<ul>
{% for x in mymembers %}
<li>{{ x.firstname }}</li>
{% endfor %}
</ul>
執行示例 »
我們使用 Django 模板標籤 {% for %}
來遍歷 members。