|
5鱼币
本帖最后由 tengke 于 2023-5-20 19:10 编辑
from django.core.exceptions import ValidationError
class a_user(forms.ModelForm):
passwords = forms.CharField(
label="确认密码",
widget=forms.PasswordInput
)
class Meta:
model = models.admin
fields = ["username","password","passwords"]
widgets = {"password":forms.PasswordInput}
def clean(self):
cleaned_data = super().clean()
pwd = cleaned_data.get("password")
pwds = cleaned_data.get("passwords")
print(pwd , pwds)
if pwds != pwd:
raise ValidationError("byz")
else:
return cleaned_data
def adminuseradd(request):
if request.method == "GET":
form = a_user()
print(form)
return render(request, "adminuseradd.html", {"form": form})
form = a_user(data=request.POST)
if form.is_valid():
form.save()
return redirect('/adminview')
else:
return render(request, "adminuseradd.html", {"form": form})
___________
这个是html界面信息
{% extends 'rootyongh.html' %}
{% block b %}
<body>
<form method="post" novalidate>
{% csrf_token %}
{% for form in form %}
<div class="form-group">
{{ form.label }} : {{ form }}
<span style="color: red:"> {{ form.errors }}</span>
</div>
{% endfor %}
{# <input type="submit" value="提交">#}
<button type="submit" class="btn btn-primary">提 交</button>
<input type="reset" name="reset" id="reset" value="重置">
</form>
</body>
{% endblock %}
——————————————————————
密码之前是可以正常提交的
密码不一致 数据不能输入后台数据 前台也没有 raise ValidationError("byz")这显示信息
根据提供的代码和信息,首先需要确认两个问题:
1.密码是否验证成功,如果密码验证未通过,则会导致表单数据无法提交到后台。
2.前端页面是否正确显示验证错误信息。
将 `adminuseradd` 函数中的 `print(form)` 行注释以避免在控制台输出对象并重新测试。
为了确保密码验证成功,请检查形式错误是否引发ValidationError,并更新 `adminuseradd` 中的else分支如下所示:
- form = a_user(data=request.POST)
- if form.is_valid():
- form.save()
- return redirect('/adminview')
- else:
- print(form.errors) # 输出表单验证错误。
- return render(request, "adminuseradd.html", {"form": form})
复制代码
这将从表单打印出验证错误消息(如果存在),以便更好地排除密码验证中的问题。
为了确保前端页面正确显示带有错误信息的表单,请使用以下内容替换html文件中for循环代码块中的错误span标记:
- <span style="color: red;">{% for error in form.passwords.errors %}{{ error }}{% endfor %}</span>
复制代码
这将显示特定于`passwords`字段的任何验证错误消息。
请重新测试代码并确保已解决密码验证和表单错误消息问题。
|
最佳答案
查看完整内容
根据提供的代码和信息,首先需要确认两个问题:
1.密码是否验证成功,如果密码验证未通过,则会导致表单数据无法提交到后台。
2.前端页面是否正确显示验证错误信息。
将 `adminuseradd` 函数中的 `print(form)` 行注释以避免在控制台输出对象并重新测试。
为了确保密码验证成功,请检查形式错误是否引发ValidationError,并更新 `adminuseradd` 中的else分支如下所示:
这将从表单打印出验证错误消息(如果存在 ...
|