首页 > 解决方案 > 注册时用户看不到 Django 中的消息错误

问题描述

我的用户注册功能有问题。我的目标是让代码检查数据库中的用户名是否已经被使用,并让用户知道它是否已经被使用。目前,第一部分的代码运行良好,但第二部分不起作用。出现消息“出现问题”,但不是特定于用户名“此用户已存在”的消息。我尝试执行在堆栈上找到的以下选项,但没有任何效果:

有人知道我的代码有什么问题吗?这可能是一件非常愚蠢的事情。

这是我的观点.py

def user_register(request):
    if request.method == 'POST':
    form = UserCreationForm(request.POST)
    if form.is_valid():
        username = form.cleaned_data['username']
        password = form.cleaned_data['password1']
        user = User.objects.create_user(username=username, password=password)
        group = Group.objects.get(name='Stroller') 
        group.user_set.add(user)
        user.save()
        login(request, user)
        messages.success(request, "New account successfully created" )
        return redirect('accounts:dashboard')

    else:
        if User.objects.get(username=form.cleaned_data['username']).exists():
            messages.error(request, "This user already exists, please chose another name")
            return redirect('accounts:create_user')

        else:
            messages.error(request, "Something went wrong - please check again the form")
            return redirect('accounts:create_user')

else:
    form = UserCreationForm()
    return render(request,'dist/sign-up.html',{'form':form})

这是我的模板

<h1 class=display-4>Sign Up</h1>
                    <hr>
                    {% for message in messages %}
                        <div class="alert {{ message.tags }} alert-dismissible" role="alert">
                        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                        {{ message }}
                        </div>
                    {% endfor %}
                    <div class="row mx-n2">
                        <form action="{% url 'accounts:create_user' %}" method="POST">
                            {% csrf_token %}
                            <p>Please, enter a valid username <br>{{ form.username }} <br><i>Usernames are unique on the platform</i></p>
                            <p>Please, enter a valid password <br>{{ form.password1 }}<br>
                                <i>Not too similar to your personal information</i><br>
                                <i>Not too common</i><br>
                                <i>At least 8 characters</i><br>
                                <i>Not only numbers</i>
                            </p>
                            <p>Please, enter the same password as before <br>{{ form.password2 }}<br></p>
                            <button type="submit" class="btn btn-dark">Done</button>
                        </form>
                    </div>

感谢您的任何帮助!

标签: djangomessageuser-registration

解决方案


推荐阅读