10

我刚刚开始使用 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 中,我所有的变量标记都消失了(即,没有被适当的值替换,而是被替换为什么都没有)。

我想我正在跳过一些关键步骤,但我无法弄清楚它是什么。有任何想法吗?

4

2 回答 2

13

您需要从“模板”更改为“模板名称”

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

https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.views.login

于 2012-08-09T09:53:02.863 回答
3

尝试从您的 url 配置中删除模板名称。然后 Django 将回退到标准模板,这样您就可以查看是否以某种方式搞砸了模板,或者是否有其他问题。

我的下一个猜测是检查您的 TEMPLATE_CONTEXT_PROCESSORS 设置。如果您定义了其中任何一个,请务必包括

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

如果您还没有定义任何内容,django 将使用一个标准元组,它已经包含了 auth 处理器。

于 2012-06-01T06:28:10.767 回答