无法初始化Django中的隐藏字段

时间:2019-06-26 10:38:42

标签: django django-forms

这是我的观点:

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中的隐藏方法)?

1 个答案:

答案 0 :(得分:0)

解决方案实际上与我的视图或表单类无关,而与模板有关。因此,如果有人错过了它,我将发布此消息:不要忘记在表单中包含隐藏字段:

{% for hidden_field in form.hidden_fields %}
  {{ hidden_field }}
{% endfor %}