Noreversematch во время рендеринга: реверс для 'django.contrib.auth.views.login' ''

StackOverflow https://stackoverflow.com/questions/4578685

Вопрос

Я использую аутентификацию Джанго, и в шаблоне 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top