在我的Django网址中,我有许多以以下结尾的网址格式:
(redirect/(?P<redirect_to>\w+))
这意味着这些网址可以(或不)以/redirect/TARGET/
结尾。这些URL模式具有其他命名参数(主要是一个:pk
)
现在,我希望在这些URL模式使用的模板中,能够通过添加redirect_to参数来改变当前页面路径,并保持其他参数和URL反向名称不变。
我可以在模板中获取网址反向名称,方法是将resolve(path).url_name
添加到当前上下文,然后将其与{% url %}
模板标记一起使用。
我想知道是否有任何简单的方法可以动态地将参数(从resolve(path).kwargs
)添加到URL反向标记?
答案 0 :(得分:1)
我认为你应该为此创建一个custom tag(用{%url_redirect“your_new_destination”%}替换你的{%url%}标签。
在your_app / templatetags / my_custom_tags.py中:
from django.core.urlresolvers import reverse, resolve
@register.simple_tag(takes_context=True)
def url_redirect(context, new_destination):
match = resolve(context.request.path)
match.kwargs['redirect_to'] = new_destination
return reverse(match.url_name, args=match.args, kwargs=match.kwargs)
在你的模板中:
{% load my_custom_tags %}
{% url_redirect "your_new_destination" %}
请注意,您需要将“django.core.context_processors.request”添加到TEMPLATE_CONTEXT_PROCESSORS,以便此代码段能够正常运行。