Django 不评估模板变量

Django isn't evaluating template variables

当我检查页面时,我看到:post="{% url daySlots %}" 但我希望看到这个评估为:post="/daySlots/" 它还忽略了其他变量,html 显示的变量名称如下:{{ duration }} 而不是我期望的 1.5 这样的值。

在我的 views.py 中,html 代码是在如下函数中生成的:

html_cal = Calendar(today.year, today.month, day_colors)

context = {
        "html_cal": mark_safe(html_cal)
}

response = render(request, "pages/book.html", context)

book.html 长得像

{% block content %}
  <div class="row">
    {{ html_cal }}
  </div>
{% endblock content %}

日历功能还有一些格式化文本,例如: td = f"post=\"{{% url daySlots %}}\"

关于如何让 Django 识别 html 中的变量的任何想法?

您可以传递一个已编译的 Template to the {% include %} 标签,这样您就可以像您一样生成模板片段,并在具有当前上下文的另一个模板中呈现它们。

from django.template import Template


html_cal = Calendar(today.year, today.month, day_colors)
context = {
    "html_cal": Template(html_cal)
}
response = render(request, "pages/book.html", context)

在您的模板中

{% block content %}
  <div class="row">
    {% include html_cal %}
  </div>
{% endblock content %}