如何让Django模板使用字符串格式?

时间:2014-01-05 07:47:45

标签: python django string formatting

我希望events.html模板以某种方式格式化字符串,但我不知道如何做到这一点。我在下面的方式是我认为它应该如何工作,但事实并非如此。

events.html

{% extends "base.html" %}
{% block content %}
{% for object in objects %}
<h1>{{object.name}}</h1>
<p>When: {{ "It will take place in the year %s and the month %s" % (object.when.year, object.when.month) }}</p>
{% endfor %}
{% endblock %}

views.py

from django.template.response import TemplateResponse
import pdb
from events.models import Event

def home(request):
    objects = Event.objects.all()
    return TemplateResponse(request, 'events.html', {'objects': objects}); 

1 个答案:

答案 0 :(得分:1)

为什么在不需要时进行插值?请尝试以下方法:

<p>When: It will take place in the year {{ object.when.year }} and the month {{ object.when.month }}</p>

另一个想法:关于字符串插值,the docs说出以下内容:

  

因此,只要有多个参数,就应该使用命名字符串插值(例如,%(天)s)而不是位置插值(例如%s或%d)。如果使用位置插值,则翻译将无法重新排序占位符文本。

所以,首先,你需要将要插入的参数括起来作为 dict ,这要求它们用大括号括起来,而不是像你的代码那样用括号括起来。然后,您应该使用命名参数,而不是依赖于位置插值。

{{ "It will take place in the year %(year) and the month %(month)." % {'year': objects.when.year, 'month': objects.when.month} }}