Django 登录无法正常工作

Django login doesn't work properly

我的 django 登录有问题。我正在使用 django 自己的登录页面,但问题是当我注册一个新用户时,用户无法登录。我已经尝试了一切,但找不到任何解决方案。我可以在 database.DB 中看到用户名。有解决这个问题的想法吗?

我的登录form.py:

class UserForm(forms.ModelForm):
   password = forms.CharField(widget=forms.PasswordInput())
   confirm_password = forms.CharField(widget=forms.PasswordInput())

   class Meta:
       model = User
       fields = ('username', 'email')
class UserProfileForm(forms.ModelForm):
   class Meta:
       model = UserProfile
       fields = ('website', 'picture','user_type')

错误提示:请输入正确的用户名和密码。请注意,这两个字段都可能区分大小写。

所以这意味着它找不到我的用户,即使我可以从数据库中看到他们。

在 Django 中处理身份验证的一个常见错误是没有在您的视图中正确处理登录表单;即正确使用Django提供的authenticatelogin函数。 需要才能正确验证用户; authenticate 创建密码哈希以检查数据库中的加密密码,login 设置将当前用户标记为已登录。

from django.contrib.auth import authenticate, login

def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            # Redirect to a success page.
        else:
            # Return a 'disabled account' error message
            ...
    else:
        # Return an 'invalid login' error message.

如果您觉得自己在视图中正确使用了这些函数,那么请post您在视图中使用的代码。

你应该使用django.contrib.auth.views

示例:urls.py

from django.contrib.atuh import views as auth_views url(r'^login/' , auth_views.login , {'template_name' : 'path/to/template.html'} , name='login')

就是这样,只需使用path/to/template.html

中的{{form}}变量

DOCS

我认为你的问题是你的 meta class 中没有 'password'。所以你的 Meta class 应该看起来像:

class 元: 模型 = 用户 字段 = ('username', 'email', 'password')