python - Django 动态 url 参数名称
问题描述
基本上试图做
{% 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})
它会用正确的参数名称解压它。所以我需要在模板处理器中对此进行某种等效
解决方案
我认为你把事情复杂化了。您自己还没有展示您的观点,但我不明白为什么他们不能都采用一个通用命名的参数 - 比如说param
- 来完成特定的工作。所以 URL 可能是:
re_path(r'^title/(?P<param>[a-zA-Z0-9-]+)/$', TitlePage.as_view(), name='title')
re_path(r'^user/(?P<param>[a-zA-Z0-9-]+)/$', ProfilePage.as_view() ,name='profile')
现在你可以做
{% url dynamic_url_name param=dynamic_parameter_value %}
推荐阅读
- spring - How to filter @PathParam for xss protection?
- php - Sum results inside while loop
- php - 将数据从 aprs 服务器传输到 symfony 数据库
- c# - 当使用的字体不支持这种语言时,标签控件如何正确显示日文字符?
- angular - Angular - 组数据
- spring-boot - @ConfigurationProperties:绑定类中的默认值
- javascript - 在 Javascript 中为函数内部的 CSS 文本设置样式
- android - Android Studio 无法识别 GSON 库
- r - 将 R 中的对象可视化为树
- r - 如何根据多个key聚合数据