Django 模板变量


模板变量

在 Django 模板中,您可以通过将变量放入其中来呈现变量{{ }}括号:

示例

templates/template.html:

<h1>Hello {{ firstname }}, how are you?</h1>
运行示例 »

在视图中创建变量

变量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 %}循环遍历成员。

模板标签