Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django登录表单未进行身份验证_Django_Django Views_Django Authentication - Fatal编程技术网

Django登录表单未进行身份验证

Django登录表单未进行身份验证,django,django-views,django-authentication,Django,Django Views,Django Authentication,尝试使用基于类的视图创建登录视图(第一次),所有内容都会被填充,但它一直说我的用户名无效。请帮我找出哪里出了问题 login.html(编辑以显示整个表单): forms.py class LoginForm(forms.Form): username = forms.CharField(max_length=255, required=True) password = forms.CharField(widget=forms.PasswordInput, required=Tr

尝试使用基于类的视图创建登录视图(第一次),所有内容都会被填充,但它一直说我的用户名无效。请帮我找出哪里出了问题

login.html(编辑以显示整个表单):

forms.py

class LoginForm(forms.Form):
    username = forms.CharField(max_length=255, required=True)
    password = forms.CharField(widget=forms.PasswordInput, required=True)

    def clean(self):
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
        user = authenticate(username=username, password=password)
        if not user or not user.is_active:
            raise forms.ValidationError("Sorry, that login was invalid. Please try again.")
        return self.cleaned_data

    def login(self, request):
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
        user = authenticate(username=username, password=password)
        return user
app_name = 'dispatch'

urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^accounts/login/$', views.LoginView.as_view(), name='login'),
    url(r'^logout/$', views.LogoutView.as_view(), {'next_page': '/accounts/login'}, name='logout'),
    url(r'^profile/(?P<pk>\d+)/$', views.ProfileDetailView.as_view(), name='profile_detail'),
]
url.py

class LoginForm(forms.Form):
    username = forms.CharField(max_length=255, required=True)
    password = forms.CharField(widget=forms.PasswordInput, required=True)

    def clean(self):
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
        user = authenticate(username=username, password=password)
        if not user or not user.is_active:
            raise forms.ValidationError("Sorry, that login was invalid. Please try again.")
        return self.cleaned_data

    def login(self, request):
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
        user = authenticate(username=username, password=password)
        return user
app_name = 'dispatch'

urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^accounts/login/$', views.LoginView.as_view(), name='login'),
    url(r'^logout/$', views.LogoutView.as_view(), {'next_page': '/accounts/login'}, name='logout'),
    url(r'^profile/(?P<pk>\d+)/$', views.ProfileDetailView.as_view(), name='profile_detail'),
]
app_name='dispatch'
URL模式=[
url(r'^$',views.IndexView.as_view(),name='index'),
url(r“^accounts/login/$”,views.LoginView.as_view(),name='login'),
url(r“^logout/$”,views.LogoutView.as_view(),{'next_page':'/accounts/login'},name='logout'),
url(r“^profile/(?P\d+/$”,views.ProfileDetailView.as_view(),name='profile_detail'),
]

我不知道为什么那个教程会让它变得如此复杂,但你所要做的就是扩展默认的登录视图,添加你的
get\u success\u url
函数和
模板\u name

from django.contrib.auth.views import LoginView as AuthLoginView

class LoginView(AuthLoginView):
    success_url = '/'
    template_name = 'pages/login.html'
    redirect_field_name = REDIRECT_FIELD_NAME

    def get_success_url(self):
        redirect_to = self.request.GET.get(self.redirect_field_name)
        if not is_safe_url(url=redirect_to, host=self.request.get_host()):
            redirect_to = self.success_url
        return redirect_to
编辑:您的表单缺少输入上的
名称
属性。这就是django寻找值的地方

<input type="text" name="{{ form.username.name }}" />
<input type="password" name="{{ form.password.name }}" />


登录视图是否来自django 1.11?我无法导入名称LoginView。在我的应用程序中使用Django 1.10。将Django升级到1.11以修复导入错误,现在它根本不尝试进行身份验证。只需重新加载页面是的…这是相当长的思考至少上面的整个表单编辑的答案,看看它