gpt4 book ai didi

python - 如何在自定义模板标签中传递 url 标签?

转载 作者:行者123 更新时间:2023-11-28 04:47:21 26 4
gpt4 key购买 nike

我正在学习 Django 构建一个小型站点,我发现我有很多模板,我在其中列出了对象,每个模板都有一个指向它的链接。我想我可以制作一个自定义模板标签,比如

{% object_list some %}

some 是一个字典 {'list': obj_list, 'link': link} 其中 obj_list 是我想要的对象列表打印出来并且 link 应该是一些指向该项目的 url 结构。

模板(称为 object_list.html)应如下所示

{% for object in object_list %}
<li><a href="{% url myapp:object object.id %}">{{object.name}}</a></
{% endfor %}

现在,我的问题是我不知道在 url 中做什么。我希望它灵活,例如“myapp:object”被参数“link”替换,例如,如果对象类型是 User,那么我使用 {%url myapp:user user.id%}

这有可能吗?怎么办?

我试过了 this solution , 在形式上

{% for object in object_list %}
{% url 'link' as my_url %}
<li><a href="{% url my_url object.id %}">{{object.name}}</a></li>
{% endfor %}

'myapp:myobject' 作为参数,但它不起作用。准确的说,在模板中

{% load property_extras %}
{% object_list property_dict %}

其中 property_dict 是我的参数,templatetag/property_extras.py 是保存标签的文件,给出了 NoReverseMatch 错误(如果我使用普通模板 -没有自定义标签 - 它工作正常)。

更多信息,我的模板标签是

@register.inclusion_tag('properties/object_list.html')
def object_list(object_dict):
print(object_dict['list'])
print(object_dict['link'])
return {
'object_list': object_dict['list'],
'link': object_dict['link'],
}

最佳答案

我相信你可以使用

{% for object in object_list %}
<li><a href="{{ object.get_absolute_url }}">{{object.name}}</a></li>
{% endfor %}

并完全删除 {% url %} 的使用。根据 documentation,为您的模型定义方法 get_absolute_url 是解决问题的推荐方法。 .

关于python - 如何在自定义模板标签中传递 url 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41638025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com