Как правильно использовать встроенный вид входа в django

Я только начинаю работать с Django и пытаюсь максимально использовать встроенные функции. Таким образом, для входа в систему пользователя я использую встроенное представление входа в систему и назначаю его базовому URL моего сайта:

urlpatterns=patterns('django.contrib.auth.views',
    url(r'^/$','login',{'template':'mytemplate.html'}),

mytemplate.html выглядит примерно так:

<!DOCTYPE html>
<html>
<body>
    {%if form.errors %}
    <p> Invalid username/password combination, please try again </p>
    {% endif %}

    <h1>Welcome to My Site!</h1>
    <form action="{% url django.contrib.auth.views.login %}" method="post">
    {% csrf_token %}
        {{form.username.label_tag}}{{form.username}}
        {{form.password.label_tag}}{{form.password}}
        <input type="submit" id="submit" name="submit" value="Sign in" />
        <input type="hidden" name="next" value="{{ next }}" />        
    </form>
    <a href="password_reset/" id="forgot"> forgot username/password</a><br />
    <a href="register" id="new">new user</a>
</body>
</html>

Моя проблема в том, что шаблон не проходит через какой-либо контекст, который он должен. В отображаемом HTML все мои переменные теги просто исчезают (т.е. вместо того, чтобы заменяться соответствующими значениями, они заменяются ничем).

Я предполагаю, что пропускаю какой-то важный шаг, но я не могу понять, что это такое. Есть идеи?

2 ответа

Вам нужно изменить с "шаблона" на "имя шаблона"

urlpatterns=patterns('django.contrib.auth.views',
    url(r'^/$','login',{'template_name':'mytemplate.html'}),

https://docs.djangoproject.com/en/1.4/topics/auth/

Попробуйте удалить имя шаблона из конфигурации URL. Затем Django вернется к стандартному шаблону, и вы сможете увидеть, не испортили ли вы какой-либо шаблон или что-то не так.

Следующим моим предположением будет проверка ваших настроек для TEMPLATE_CONTEXT_PROCESSORS. Если вы определили любой из них, обязательно включите

"django.contrib.auth.context_processors.auth",

Если вы не определили ничего, django будет использовать стандартный кортеж, который уже включает в себя процессор аутентификации.

Другие вопросы по тегам