我启动了一个名为“ blogs”的应用程序,这是一本需要编写程序的书,当我完成了“注册”功能后,该功能可以注册用户并使用它登录。我发现该用户可以正常添加到数据库,但是可以无法验证。但是当我正常使用用户名登录时,它可以工作!我检查了我的代码很多次,但是我找不到错误。请给我一些帮助,非常感谢!
这是我的代码:
users:views.py:
def register(request):
if request.method != 'POST':
form = UserCreationForm()
else:
form = UserCreationForm(data=request.POST)
if form.is_valid():
new_user = form.save()
authenticated_user = authenticate(username=new_user.username, password=request.POST['password1'])
login(request,authenticated_user)
return HttpResponseRedirect(reverse('blogs:index'))
context = {'form':form}
return render(request,'users/register.html',context)
users:register.html:
{% extends "blogs/base.html" %}
{% block content %}
<form method="post" action="{% url 'users:register' %}">
{% csrf_token %}
{{ form.as_p }}
<button name="submit">register</button>
<input type="hidden" name="next" value="{% url 'blogs:index' %}" />
</form>
{% endblock content %}
blogs:base.html:
Welcome to blog -
{% if user.is_authenticated %}
hello,{{ user.username }} -
<a href="{% url 'users:log_out' %}">logout</a>
{% else %}
<a href="{% url 'users:register' %}">register - </a>
<a href="{% url 'users:login' %}">login </a>
{% endif %}
{% block content %}{% endblock content %}
答案 0 :(得分:0)
您从哪里得到'password1'
?可能您的login.html中包含了它并造成混淆。用authenticated_user = authenticate(username=new_user.username, password=new_user.password)
更改该行。希望对您有所帮助。