为什么我的用户注册后无法进行身份验证,但登录后可以



当我完成"注册"功能时,我启动了一个名为"blogs"的应用程序作为所需的编程书籍,该功能可以注册用户并使用它登录。我发现用户可以正常添加到数据库中,但无法进行身份验证,但是当我正常使用用户名登录时,它可以工作!我检查了很多次我的代码,但我找不到错误。请给我一些帮助,非常感谢!

这是我的代码:

用户:视图.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)

用户:注册.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 %}

博客:基本.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 %}

你从哪里得到'password1'?可能您在登录名中拥有它.html并感到困惑。用authenticated_user = authenticate(username=new_user.username, password=new_user.password)更改该行。希望它会有所帮助。

最新更新