如果没有填写,我希望将错误作为字段上方的标签。 这是我的views.py:
@login_required(login_url='user_profile:login')
def NewWriting(request):
if request.method=="POST":
form=WritingForm(request.POST)
if form.is_valid():
post=form.save(commit=False)
post.author=request.user
post.save()
return redirect('user_profile:index')
else:
form = WritingForm()
subject = Subject.objects.all()
return render(request,'user_profile/writing_form.html', {'form':form , 'subject':subject})
我应该在代码中添加什么内容? 感谢
答案 0 :(得分:0)
如果表单无效,则需要添加另一个全部呈现,并且在模板中,您需要使用form.errors
。这样的东西应该工作,然后将表单验证错误传递回UI /模板以显示给用户:
@login_required(login_url='user_profile:login')
def NewWriting(request):
form = None
if request.method=="POST":
form=WritingForm(request.POST)
if form.is_valid():
post=form.save(commit=False)
post.author=request.user
post.save()
return redirect('user_profile:index')
if form is None:
form = WritingForm()
subject = Subject.objects.all()
return render(request,'user_profile/writing_form.html', {'form':form , 'subject':subject})
答案 1 :(得分:0)
没有看到你的表单类......
选项1:
如果您确实希望用户能够使用空数据提交表单,然后使用表单专门向他们显示错误,请为{{1}中的特定字段设置required=False
kwarg } .class。然后覆盖WritingForm
(link)方法,然后您可以执行以下操作:
clean_<fieldname>
将def clean_<fieldname>:
if self.cleaned_data['<fieldname>'].strip() == '':
raise ValidationError('This field cannot be blank!')
return self.cleaned_data['<fieldname>']
替换为该字段名称。
选项2:
<fieldname>
kwarg在字段上)。所以一般情况下,如果需要该字段,大多数浏览器至少会将光标移动到空字段,并且在字段中没有数据的情况下不允许提交表单。如果required=True
返回False,您还需要返回绑定表单,或者您不会看到错误(如果表单无效,您现在不会返回任何内容) 。有关使用表单的常见功能视图模式,请参阅django docs here。