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

时间:2020-05-24 14:55:08

标签: python django authentication

我启动了一个名为“ 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 %}

1 个答案:

答案 0 :(得分:0)

您从哪里得到'password1'?可能您的login.html中包含了它并造成混淆。用authenticated_user = authenticate(username=new_user.username, password=new_user.password)更改该行。希望对您有所帮助。

相关问题