这是我的观点:
def my_view(request):
if request.method == 'GET':
form = MyForm(initial={'user': "my_user"})
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
print("form is valid")
else:
form = MyForm()
return render(request, 'my_template.html', {'form': form})
这是表格
class MyForm(forms.Form):
my_field = forms.CharField(max_length=100)
user = forms.CharField(widget=forms.HiddenInput())
def clean(self):
cleaned_data = super(MyForm, self).clean()
my_field = cleaned_data.get('my_field')
if not my_field:
raise forms.ValidationError('error')
控制台(print("form is valid")
)上没有打印任何内容,因此该表格无效,并且此问题来自隐藏字段。
当我没有隐藏字段时,该表单有效
我的代码有什么问题?如何从视图函数初始化隐藏字段的值(或另一种不包含在HTML中的隐藏方法)?
答案 0 :(得分:0)
解决方案实际上与我的视图或表单类无关,而与模板有关。因此,如果有人错过了它,我将发布此消息:不要忘记在表单中包含隐藏字段:
{% for hidden_field in form.hidden_fields %}
{{ hidden_field }}
{% endfor %}