1

私の Django URL には、次で終わる多くの URL パターンがあります。

 (redirect/(?P<redirect_to>\w+))

つまり、これらの URL は/redirect/TARGET/. これらの URL パターンには、他の名前付き引数があります (ほとんど : の 1 つpk) 。

ここで、これらの URL パターンで使用されるテンプレートで、redirect_to 引数を追加するだけで現在のページ パスを変更できるようにし、他の引数と URL の逆引き名は変更しないようにしたいと考えています。

resolve(path).url_name現在のコンテキストに追加し、それを{% url %}template タグで使用することで、テンプレートで URL 逆引き名を取得できました。

resolve(path).kwargsURL 逆引きタグに(から) 引数を動的に追加する簡単な方法があるかどうか知りたいです。

4

1 に答える 1

1

このためのカスタム タグを作成する必要があると思います({% url %} タグを {% url_redirect "your_new_destination" %} に置き換えます)。

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に追加する必要があることに注意してください。

于 2012-12-14T14:26:52.073 に答える