Django:将auth_login设置为主页

时间:2012-11-09 17:07:17

标签: django

我是django的新手。问题:查看我的主页(显示默认的django登录表单)

我必须写下addess:

x.x.x.xxx:8001/login

我想通过以下方式直接访问它:

x.x.x.xxx:8001

如果我的数字是x.x.x.xxx:8001,我现在可以看到的是没有表格的登录页面。

我有:

在我的urls.py中:

urlpatterns = patterns('',
    url(r'^$', 'license.views.index', name='auth_login'),

在我的views.py

from django import template
from django.shortcuts import render_to_response
from django.views.decorators.vary import vary_on_cookie

@vary_on_cookie
def index(request):
    return render_to_response('login.html', {
    }, context_instance = template.RequestContext(request))

1 个答案:

答案 0 :(得分:1)

这是因为您没有将登录表单实例传递给表单。

除非您想在视图中执行某些自定义内容,否则最好使用Django的内置登录视图。您可以为它设置自定义模板:

url(r'^$', 'django.contrib.auth.views.login', {'template_name': 'login.html'})

有关详细信息,请参阅此页:django.contrib.auth.views.login (v1.5) docs

现在,我发现您在视图中使用装饰器,这意味着您确实想要执行自定义内容。在这种情况下,我相信你会想要使用 django.contrib.auth.forms.AuthenticationForm 。尝试在你的视图中做这样的事情:

from django.contrib.auth.forms import AuthenticationForm
from django.shortcuts import render
from django.views.decorators.vary import vary_on_cookie

@vary_on_cookie
def index(request):
    form = AuthenticationForm(data=request.POST or None)

    return render(request, 'login.html', {
        'form': form
    })