django - 注册时用户看不到 Django 中的消息错误
问题描述
我的用户注册功能有问题。我的目标是让代码检查数据库中的用户名是否已经被使用,并让用户知道它是否已经被使用。目前,第一部分的代码运行良好,但第二部分不起作用。出现消息“出现问题”,但不是特定于用户名“此用户已存在”的消息。我尝试执行在堆栈上找到的以下选项,但没有任何效果:
- 首先更改表单并引发 ValidationError 并检查前面的错误
- 其次,在函数“user_register”中验证用户是否已被占用并引发 message.error,这是我下面代码中的选项(我在这里遇到错误)
- 第三,尝试用户是否存在并在上下文中带来错误
有人知道我的代码有什么问题吗?这可能是一件非常愚蠢的事情。
这是我的观点.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">×</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>
感谢您的任何帮助!
解决方案
推荐阅读
- .net - Serilog Elasticsearch 日志未发送到服务器(但正确缓冲)
- github-actions - Github Action - 当评论添加到 PR 时接收事件?
- java - How to leave data type undetermined in a HashMap?
- c# - Docusign API - Setting up tabs without a recipient
- pine-script - 计算值的小数精度
- google-apps-script - Generate a list of Sheets that meet a condition in Google Scripts?
- go - 关闭响应流
- spring-boot - Maintaining multiple API representations in an API Gateway for a set of Spring Boot Microservices
- javascript - How to pull a random row from google sheets and use it in an HTML table
- amazon-web-services - 如何将外部位置作为 csv.gz 进行 CTAS