Django无法清除某些表单字段

时间:2018-09-27 10:37:41

标签: django python-2.7 django-forms

所以我的形式如下:

class Uploaded_Cisco_YML_Configs(forms.Form):
    uploaded_configs = forms.FileField()
    goto_model = forms.TextInput()
    interfaces_migrate = forms.Textarea()

我遇到的问题是goto_model和interfaces_migrate表单字段是在form.data字典中定义的,但是它们不在form.cleaned_data中,所以我无法正确访问它们。有什么原因可能会发生这种情况吗?。

HTML在下面

            <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <input id="uploaded_configs" name="uploaded_configs" type="file" multiple/>
        <br>
        New Model:<br>
        <input type="text" name="goto_model">
        <br>Interfaces to Migrate:
        <br>
        <input type="text" name="interfaces_migrate">
        <input type="submit" value="Run Script"/>
         </form>

而views.py在下面

form = Uploaded_Cisco_YML_Configs(request.POST, request.FILES)
        if form.is_valid():
            rebuild_args = []
            if form.goto_model is not None:
                print("#"*10)
                print(str(form.data))
                print(str(form.cleaned_data))

1 个答案:

答案 0 :(得分:1)

TextInput和Textarea不是表单字段,它们是小部件。您需要定义一个字段,然后根据需要设置小部件参数。

class Uploaded_Cisco_YML_Configs(forms.Form):
    uploaded_configs = forms.FileField()
    goto_model = forms.CharField()
    interfaces_migrate = forms.CharField(widget=forms.Textarea())

(您无需为goto_model设置小部件,因为TextInput是CharField的默认值。)

请注意,if form.goto_model is not None永远不会为假,因为它引用的是字段定义而不是值;您将需要访问form.cleaned_data['goto_model'],但是即使那样也没有意义,因为该字段是必填字段,因此,如果该字段为空,则该表单将无效。