所以我的形式如下:
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))
答案 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']
,但是即使那样也没有意义,因为该字段是必填字段,因此,如果该字段为空,则该表单将无效。