【问题标题】:Error using include and with in Django template在 Django 模板中使用 include 和 with 时出错
【发布时间】:2014-04-08 06:47:16
【问题描述】:

我在 django 模板中使用标签时遇到问题。这是我在 HTML 文件中的部分代码:

{% for habitacion in habitaciones %}
    {% with template_name=habitacion.url|add:".html" habitación_name=habitacion.name %}
        {% include "pacientes/habitaciones/"|add:template_name with habitacionNum=""|add:habitacion_name %}
        {% if forloop.counter|divisibleby:6 %}<hr>{% endif %}
    {% endwith %}
{% endfor %}

这是我的views.py代码:

def AdministrativoView( request ):
    pacientes = Pacientes.objects.all()
    habitaciones = [{'url':'habitacionAdmLlena', 'name':'Habitación 1'},{'url':'habitacionAdmLlena', 'name':'Habitación 2'},{'url':'habitacionAdmVacia', 'name':'Habitación 3'},
    template_name = "pacientes/pacientes_administrativo.html"
    return render_to_response( template_name, { 'pacientes': pacientes, 'habitaciones': habitaciones } )

我想动态创建包含标签的内容,可以这样做吗?我知道我的代码有很多错误,或者至少有一个错误,但我找不到。

谢谢!

【问题讨论】:

  • 是的,你想做的事是可能的。从我所见,您的观点在定义 habitaciones 变量时存在错误。你错过了最后的方括号:]
  • 您能否告诉我们您的代码出现了什么错误?
  • 谢谢,但是这个括号只是复制/粘贴错误。 Django 没有给我任何错误,但没有显示第二个变量的任何内容。
  • 我可以显示来自第一个上下文变量(来自 with)(template_name)的值,但我无法显示来自第二个上下文变量(form with)(habitacion_name)的值。谢谢!
  • 我在您的代码中看到名称不同:habitación_namehabitacion_name

标签: python django templates tags


【解决方案1】:

我以前遇到过同样的问题,我想include不同base.html根据一个html模板中的视图功能。不幸的是,我失败了……我尝试了另一种方法。

  1. {% include base.html %} 在每个模板 html 中
  2. 对 base.html 进行一些更改

    {% if case1 %}
        ...
    {% elif case2 %}
        ...
    {% endif %}
    

我知道这是一个粗略的方法,但可以工作

【讨论】:

  • 非常感谢!这可行,但这是一种粗略的方法,我想找到另一种解决方案。还是谢谢!
【解决方案2】:

在您的地方,我将在视图中执行逻辑,生成一组相对 URL(您现在在模板中执行的操作),然后在模板中迭代列表并依次包含每个 URL。

这样您的模板代码就会变得更简洁。此外,在视图中调试代码比模板代码容易得多,因为模板标签缺少好的错误代码。

尽量使用尽可能少的模板标签是个好主意。 add 过滤器在我看来是 Bad boy,这正是我在视图中所做的。

如果您需要将更多变量附加到包含语句,您还可以生成一个字典数组。

希望他的帮助 - que te vaya bien。

【讨论】:

  • 谢谢,我这样做了,效果很好。我生成一个“Habitaciones”数组,然后比较它以获得 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 2017-06-07
  • 1970-01-01
  • 2020-11-20
  • 2016-01-20
  • 2011-02-21
  • 2022-11-25
相关资源
最近更新 更多