【发布时间】:2016-08-04 11:57:32
【问题描述】:
我想在 Django 中制作自定义登录页面。我可以成功注册用户,但是当我想登录时它没有登录。
我的views.py 用于登录:
def login_user(request):
context = RequestContext(request)
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
print username
print password
user = authenticate(username=username, password=password)
if user:
print "rrrrr"
if user.is_active:
login(request, user)
return HttpResponseRedirect('/success/')
else:
return HttpResponse("Your Rango account is disabled.")
else:
print "Invalid login details: {0}, {1}".format(username, password)
return HttpResponse("Invalid login details supplied.")
else:
return render_to_response('login.html', {}, context)
为了注册,我写了这段代码:
def register(request):
context = RequestContext(request)
registered = False
print "inside register view"
if request.method == 'POST':
profile_form = ProfileForm(data=request.POST)
if profile_form.is_valid():
profile = profile_form.save(commit=False)
profile.save()
registered = True
else:
print profile_form.errors
else:
profile_form = ProfileForm()
return render_to_response(
'register.html',
{'profile_form': profile_form, 'registered': registered},
context)
我的models.py:
class Profile(models.Model):
# user=models.OneToOneField(User)
username=models.CharField(max_length=50)
first_name=models.CharField(max_length=50)
last_name=models.CharField(max_length=50)
email=models.EmailField()
contact=models.CharField(max_length=50)
password=models.CharField(max_length=50)
def __str__(self):
return self.username or u'
当我提供 username 和 password 时,它会接受电子邮件并传递它,但总是进入 else 部分:Invalid login details。它不会进入 if 条件。我怎样才能做到这一点?
【问题讨论】:
-
听起来
user是None,因为身份验证详细信息不正确。您看到什么错误(如果有)?你的print声明显示了什么? -
请跟随我suggested 否则包括“你如何创建用户”的代码也许有人会回答你的问题。我怀疑您将密码保存为纯文本...
-
我没有收到任何错误。它只是执行 else 部分
-
您不得像这样进行身份验证。您将密码存储为纯文本,这是非常不安全的。如果你想要一个自定义用户,文档中有一个full example。
标签: python django authentication