0

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

我必须写地址:

xxxxxx:8001/登录

我想通过它直接访问它:

xxxxxx:8001

如果我输入 xxxxxx:8001,我现在可以看到的是没有表单的登录页面。

我有:

在我的 urls.py 中:

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

在我看来.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))
4

1 回答 1

1

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

除非你想在你的视图中执行一些自定义的东西,你最好的选择是使用 Django 的内置登录视图。您可以为其设置自定义模板:

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

有关更多信息,请参阅此页面:django.contrib.auth.views.login (v1.5) 文档

现在,我看到您在视图上使用了装饰器,这意味着您确实想要执行自定义的东西。在这种情况下,我相信您会想要使用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
    })
于 2012-11-09T17:34:13.973 回答