我有以下代码:
#create user:
def create_user(request):
if request.method == 'POST':
user_info = forms.UserInfoForm(request.POST)
if user_info.is_valid():
cleaned_info = user_info.cleaned_data
User.objects.create_user(username=cleaned_info['username'], password=cleaned_info['password'])
render(.......)
这很有效。我可以查看auth_user,然后看到用户名和密码以及创建和添加的所有其他字段。
现在,我尝试使用上面的代码使用 username ='testcase'和password ='test'创建用户后,使用以下代码对用户进行身份验证:。
#验证用户
def get_entry(request):
if request.method == 'POST':
user = authenticate(username='testcase', password='test')
if user:
.........
用户始终返回为none。到底是怎么回事?我正在运行django 1.10.2。
更新
我登录admin时可以看到create_user函数创建的用户。地位不是工作人员(按照预期的那样)。我将其更改为工作人员以查看是否导致问题,但仍然get_entry方法为用户提供了无。 这令人沮丧。我真的不知道我做错了什么。
答案 0 :(得分:0)
将用户保存在一个var中,然后调用user.save(),因为User无法调用方法save()尝试:
def create_user(request):
if request.method == 'POST':
user_info = forms.UserInfoForm(request.POST)
if user_info.is_valid():
cleaned_info = user_info.cleaned_data
user = User.objects.create_user(username=cleaned_info['username'], password=cleaned_info['password'])
user.save()
render(.......)
然后你需要在函数get_entry中调用auth.authenticate:
def get_entry(request):
if request.method == 'POST':
user = auth.authenticate(username='testcase', password='test')
if user:
.........
答案 1 :(得分:0)
您的代码似乎是正确的。
问题可能在于将参数传递到create_user
视图的方式(Param传入get_entry
视图极不可能是一个问题,因为参数username
和{{ 1}}是硬编码的。
尝试打印password
和username
,然后再将其传递给password
,因为User.objects.create_user()
字段可能无法正确保存和/或正在传递空password
,Django可能正在为空密码创建一个哈希值。
P.S。:这只是一个推测,需要您对此作出回应以进一步诊断问题。