【发布时间】:2019-08-22 02:59:01
【问题描述】:
基本上是在尝试做
{% url dynamic_url_name dynamic_parameter_name=dynamic_parameter_value %}
尝试了最简单的方法
<a href="{% url belongs_to belongs_to_url_arg=entry|getattribute:belongs_to_url_arg_value %}">{{entry}}</a>
{% include 'mainsite/children/title_template.html' with
the_title=title_text
is_title_page=True
entries_of="title"
belongs_to="profile"
belongs_to_url_arg="user"
belongs_to_url_arg_value="author"
%}
从这里我可以看出参数不能是上下文变量,所以接下来我可以尝试做的是简单地解压字典,就像我在 python 中使用类似的东西做的那样
{% url **{dynamic_parameter_name:dynamic_parameter_value} %}
但我不知道在 django 模板中是否有可能,如果可能的话如何?
我的网址看起来像
re_path(r'^title/(?P<title_text>[a-zA-Z0-9-]+)/$', TitlePage.as_view(), name='title')
re_path(r'^user/(?P<user>[a-zA-Z0-9-]+)/$', ProfilePage.as_view() ,name='profile')
而且我的 url 是由上下文变量或在包含标记中选择的,因此它是一个变量。
{% url url_variable xxx=value %}
现在,url_variable 已经是 django 的一部分,url 标签接受变量作为它的第一个参数。但是xxx 并不总是相同的,而是根据url_variable 而变化,在这种特殊情况下;如果url_variable 是标题,我希望xxx 是title_text,如果它是个人资料,我希望它是user。
参数名称保存在belongs_to,所以如果这是一个普通的python函数,我可以简单地完成
url(url_variable, **{belongs_to: value})
它会用正确的参数名称解压它。所以我需要在模板处理器中对此进行某种等效
【问题讨论】:
-
您根本不需要 URL 模式元素。您需要查询字符串,例如
/dynamic_url/?belongs_to=foo&the_title=bar等。 -
否,因为我试图链接到的
profile和title页面中涉及不同的 html。 get 参数确实用于其他过滤,但我有 3 个主要模型usertitleentry,它们都有各自的 url 和模板。入口模型显示在每一个中,但页脚根据基本 url 和 get 参数而变化。 -
我完全不明白为什么这与我所说的相矛盾。
-
使用
/title/?title=some-title而不是/title/some-title/会不会很荒谬,或者我不明白 -
我完全听不懂你在说什么。为什么要复制“标题”?您希望您的完整 URL 是什么样的? (那包含标签与什么有什么关系?)
标签: python django python-3.x django-templates