我的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')
错误说:请输入正确的用户名和密码。请注意,这两个字段可能区分大小写。
所以这意味着它无法找到我的用户,即使我可以从数据库中看到它们。
答案 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
变量即可