Django登录无法正常工作

时间:2016-02-23 17:25:46

标签: python django login registration email-validation

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

我的登录表单.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')

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

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

3 个答案:

答案 0 :(得分:1)

在Django中处理身份验证的常见错误是没有在您的视图中正确处理登录表单;即,正确使用Django提供的身份验证登录功能。这些必需以便正确验证用户身份; 身份验证会创建密码哈希以检查数据库中的加密密码,登录会设置会话数据,以便将当前用户标记为已登录。

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.

如果您认为自己在视图中正确使用了这些功能,请将您用于视图的代码发布。

答案 1 :(得分:1)

我认为您的问题是您没有密码'在你的元类中。所以Meta类看起来应该是这样的:

类元:        model =用户        fields =('用户名','电子邮件','密码')

答案 2 :(得分:0)

您应该使用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')

就是这样,只需使用{{form}}

中的path/to/template.html变量即可

DOCS