django - 在 Django 框架中,我的函数 Register 捕获了更多错误
问题描述
我有一个问题:在我的函数中,register()
我使用FormRegistration
了 Django 和我的 custom ProfilForm
,但我无法显示不同的错误(用户名不唯一,密码不匹配,...)。
视图.py
def register(request):
if request.method == 'POST':
form = UserCreate(request.POST)
form2 = ProfilForm(request.POST)
if form.is_valid() and form2.is_valid():
user = form.save()
form2 = form2.save(commit=False)
form2.user = user
form2.skill = form2.cleaned_data.get('skill')
form2.board = form2.cleaned_data.get('board')
form2.save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
login(request, user)
return redirect('/accueil')
else:
form = UserCreate()
form2 = ProfilForm()
return render(
request,
'registration/register.html',
{'form2': form2},
{'form': form})
这是我的模板 register.html 用于显示错误:
{% if form.errors %}
<div class="alert alert-danger">
<p><strong>Error !</strong> <p>There was a problem while trying to register, check your fields.</p></p>
</div>
{% endif %}
{% if form.errors %}
<div class="alert alert-danger">
<p><strong>Error !</strong> <p>{{ form.username.errors|striptags }}</p></p>
</div>
{% endif %}
有什么建议么?
解决方案
有几个问题:
- 这条线
form2 = form2.save(commit=False)
看起来不对;您应该将 的输出分配save()
给另一个变量,但现在您只是覆盖form2
. 最后一个 return 语句应该只得到一个
dict
上下文:改变你的代码
return render( request, 'registration/register.html', {'form2': form2}, {'form': form})
至
return render( request, 'registration/register.html', {'form2': form2, 'form': form})
推荐阅读
- asp.net-mvc - 在执行表单 POST 到控制器操作方法时获得 404 响应
- visual-studio-code - 如何分别编译不同组的 sass 文件?
- laravel - 集合和雄辩的结果
- java - Exoplayer DASH Streaming 示例,在手机上运行时总是崩溃
- reactjs - 从 TreeView 拖动事件时,整个页面向右滚动(计划/外部拖放)
- javascript - 错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头 ASYNC AWAIT 不起作用
- javascript - 在 React 中向容器顶部添加内容时如何保持滚动位置
- ruby-on-rails-6 - Rails:wkhtmltopdf 不可执行
- javascript - 材料 ui,redux 可选连接的通用高阶(HOC)反应组件打字稿
- python - 如何对 pandas DataFrame 中的内部列表进行排序?