Подтвердить что ты не робот

Теги шаблона Django: как отправить next_page в {url auth_logout}?

У меня есть urls.py с этой строкой:

url(r'^logout/$', 'django.contrib.auth.views.logout', name="auth_logout"),

В моем теге шаблона у меня есть эта строка:

<a href="{% url auth_logout %}">Logout</a>

Теперь я хотел бы добавить параметр next_page в url templatetag, но я не могу заставить его работать. Я пробовал это:

{% url auth_logout request.path %}"

... и это:

{% url auth_logout request,request.path %}

Но никто из них не работает. Как я могу предоставить функцию с дополнительным параметром next_page, используя шаблон templatetag?

Спасибо!

4b9b3361

Ответ 1

Две вещи:

  • django.contrib.auth.views.logout() принимает необязательную следующую страницу, которую вы не предоставляете
  • url templatetag содержит аргументы с разделителями-запятыми

Итак, сначала измените свой URL, чтобы принять следующую страницу Ваш URLConf нуждается в модификации для перехода на следующую страницу, что-то вроде этого для жесткого переадресации:

url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}, name='auth_logout'), 

и один параметризованный результат:

url(r'^logout/(?P<next_page>.*)/$', 'django.contrib.auth.views.logout', name='auth_logout_next'), 

И затем измените свой шаблон, чтобы перейти на следующую страницу

<a href="{% url auth_logout_next /some/location %}">Logout</a>

Ответ 2

Для чего это стоит, я использую это:

<a href="{% url auth_logout %}?next=/">Logout</a>

Ответ 3

Sander Smits имеет самое легкое решение. В вашем случае используйте:

<a href="{% url "auth_logout" %}?next={{ request.path|urlencode }}">Logout</a>

И в более общем случае используйте:

<a href="{% url "auth_logout" %}?next={% url "my_url" my_params |urlencode %}">Logout</a>

Ответ 4

Если кто-то хочет выдать ссылку HTML через проверку валидации views.py с помощью mark_safe и переводов.

Я использовал эту часть, чтобы выйти из системы, а затем отправить его на страницу восстановления пароля.

mark_safe(_("Error message") + '<a href="' + reverse('logout') + '?next=' + reverse('password_recover') + '">' + ugettext("Forgot password?") + '</a>')