【问题标题】:Dynamic URL in Django/HTMLDjango/HTML 中的动态 URL
【发布时间】:2013-07-18 08:44:34
【问题描述】:
{% for record in records%}

string1 = 'views.' + record.field1 + record.field2

<a href ="{%url string1 %}>Test this</a>

{%endfor%}

这在 HTML / Django 中可行吗? 我的需要是动态地制作变量'string1'并将其传递给url。 请求帮助。

【问题讨论】:

    标签: html django-templates


    【解决方案1】:

    使用{% with %}

    {% with "views."|add:record.field1|add:record.field2 as string1 %}
        <a href="{% url string1 %}">Test this</a>
    {% endwith %}
    

    但这不被认为是 IMO 的最佳实践,因为您有效地将逻辑放入模板中。

    这应该由record 模型上的方法处理,可能称为field_url 或其他名称。 这样您就不会违反 DRY,也不会冒险让其他人弄乱您的网址,而且您有机会在暴露网址之前正确清理您的网址。

    def field_url(self):
        return "views.{0}{1}".format(self.field1, self.field2)
    

    并在您的模板中调用

    {% for record in records %}
        <a href="{% url record.field_url %}">My URL</a>
    {% endfor %}
    

    【讨论】:

    • 添加了 {%endwith%}。仍然错误“对于带有参数'()'和关键字参数'{}'的'string1'的反向操作。string1的视图存在于urls.py中
    • 在第一种方法中,'string1' 不能用作范围 {% url string1 %} 内的填充变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2015-01-06
    • 2021-09-02
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多