【问题标题】:Using string literals as parameters to template tags in Django templates使用字符串文字作为 Django 模板中模板标签的参数
【发布时间】:2010-10-25 15:51:18
【问题描述】:

我发现自己经常做的一件事是将字符串文字作为参数传递给模板标签或函数;例如:

{% url my-url 'my_param' %}

不幸的是,django 模板引擎不允许你这样做。所以我发现自己在我的视图代码中经常这样做:

my_context_dict['MY_PARAM'] = 'my_param'

然后在我看来代码:

{% url my-url MY_PARAM %}

或者创建一系列 URL 映射,我个人尽量避免。

是否可以在 Django 模板中使用字符串文字?或者可能是更优雅的解决方案?我在这里或文档中没有看到任何内容。

【问题讨论】:

    标签: django templates django-templates


    【解决方案1】:

    使用双引号代替单引号:

    {% url my_view "my_param" %}
    

    【讨论】:

      【解决方案2】:

      这感觉不对,但其实是对的。

      <a href="{% url someting "param1" "param2" %}">text</a>
      

      嵌套的"" 似乎不应该工作。他们是这样。 Django {% %} 材料只是简单地从 HTML 中提取出来,而不考虑周围的上下文。所以“重复的”" 根本没有真正重复。

      【讨论】:

      • url.py urlpatterns 需要做哪些修改?
      【解决方案3】:

      非常奇怪 - 我有一个 django 项目,它使用单引号来传递字符串值,它运行得很好。

      <a href="{% url categories 'vendor' %}"</a>
      <a href="{% url categories 'crew' %}"</a>
      

      经过进一步调查,结果是this has changed in django 1.5。它现在甚至需要在 url 模式名称周围加上引号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-08
        • 2022-11-22
        相关资源
        最近更新 更多