【发布时间】:2020-10-10 22:38:48
【问题描述】:
我只想显示一个复选框,用户必须单击以确认已收到通知:
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 不是解决方案,因为此字段是每个定义所必需的,并且“如果 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)
【问题讨论】:
-
您能分享一下您的看法吗?
-
@WillemVanOnsem views.py sn-p 已添加,感谢您的快速回复:D
-
我在这里找到了一些东西,但没有完全解决我的问题:stackoverflow.com/questions/8542839/…