我只想显示一个用户必须单击以确认已采取通知的复选框:
class CheckForm(forms.Form):
confirmed = forms.BooleanField(required=True)
def __init__(self, *args, **kwargs):
super(CheckForm, self).__init__(*args, **kwargs)
self.fields['confirmed'].label = 'I confirm that I have taken notice'
现在的问题是我的表单显示以下标签:“此字段为必填。”在模板输出。当我在views.py:
中调用表单时,这也很有意义form = CheckForm(request.POST)
是否有任何解决方法只能将提到的标签隐藏在我的模板上,并保持required = True? 只需在forms.py中执行required = False 或从views.py中删除request.POST 不是解决方案,因为此字段是每个定义的必填字段,并且“ if form.is_valid():”不验证是否缺少request.POST
views.py
def check(request):
form = CheckForm(request.POST)
user = User.objects.get(user=request.session.get('user'))
if request.method == 'POST':
if form.is_valid():
user.token_checked = True
user.save()
messages.success(request, 'Thanks for your check-up, you are now able to login again.')
return redirect(reverse('login'))
else:
return render(request, 'check.html')
else:
if not user.token_checked:
username = str(user)
token = str(user.reset_token)
args = {
'token': token,
'username': username,
'form': form
}
return render(request, 'check.html', args)
答案 0 :(得分:0)
对于BooleanField来说是必需的,没有任何意义。 BooleanField可以为true或false,而html表单中false的表示形式是一个空复选框,该复选框很不错:为空。参见docs。
答案 1 :(得分:0)
找到了可以接受的解决方案,我只需这样做:
self.fields['reset_token'].error_messages = {'required': 'My custom message to display'}
可悲的是,这并没有完全隐藏邮件,但至少可以接受 如果您只希望用户确认您的网站/服务的某些条款。