Noreversematch во время рендеринга: реверс для 'django.contrib.auth.views.login' ''
-
14-10-2019 - |
Вопрос
Я использую аутентификацию Джанго, и в шаблоне login.html следующее оператор генерирует ошибку:
{% url 'django.contrib.auth.views.login' %}
TemplatesyntaxError at /login
Поймал noreversematch во время рендеринга: обратный для «django.contrib.auth.views.login '» с аргументами' () 'и аргументами ключевых слов' {} 'не найден.
Этот URL определяется в моем urls.py:
(r'^login$', 'django.contrib.auth.views.login')
Я установил систему AUTH:
INSTALLED_APPS = (
'django.contrib.auth',
...
)
Любые идеи?
Решение
На сцене Джанго 1.10:
По состоянию на Django 1.10, больше невозможно использовать строку 'django.contrib.auth.views.login'
в url()
или {% url %}
ярлык.
Во -первых, измените свои шаблоны URL -адреса, чтобы использовать вызов, и назовите шаблон URL. Например:
from django.contrib.auth import views as auth_views
url_patterns = [
url(r'^login$', auth_views.login, name='login'),
]
Затем обновите свой тег URL, чтобы использовать то же имя:
{% url 'login' %}
На сцене Джанго 1.5:
Тебе не нужно {% load url from future %}
Еще больше, просто используйте цитируемый синтаксис ({% url 'django.contrib.auth.views.login' %}
) и все готово (см. Django 1.5.).
На сцене Джанго 1.3:
Обратите внимание, что на Джанго 1.3 (Как указывает Карен Трейси ниже), правильный способ исправить это - добавить:
{% load url from future %}
В верхней части вашего шаблона, а затем используйте:
{% url 'django.contrib.auth.views.login' %}
До Django 1.3:
Судя по этому сообщению об ошибке (обратите внимание на двойные одноразовые по пути к представлению), я предполагаю, что {% url ... %}
Тег не хочет кавычек, попробуйте:
{% url django.contrib.auth.views.login %}
Другие советы
Синтаксис с кавычками является новым в Django 1.3. Правильный способ исправить ошибку на 1.3