Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django视图中作为属性访问表单字段_Python_Django_Forms_Validation - Fatal编程技术网

Python 在django视图中作为属性访问表单字段

Python 在django视图中作为属性访问表单字段,python,django,forms,validation,Python,Django,Forms,Validation,根据Django教程,您应该使用数据字典访问表单字段。我想知道为什么我不能直接访问表单的属性?我的表单验证得很好,但当我试图访问它时,Django抱怨对象没有该属性。我在下面添加了一些代码,希望能帮助诊断问题 表格: 视图: 我得到以下错误:“CustomForm”对象没有属性“description”。我是否在文档中遗漏了一些说明我不能这样做的内容?如果您的表单经过验证,则您可以访问myForm已清理的\u数据: print myForm.cleaned_data.get('descripti

根据Django教程,您应该使用数据字典访问表单字段。我想知道为什么我不能直接访问表单的属性?我的表单验证得很好,但当我试图访问它时,Django抱怨对象没有该属性。我在下面添加了一些代码,希望能帮助诊断问题

表格:

视图:


我得到以下错误:“CustomForm”对象没有属性“description”。我是否在文档中遗漏了一些说明我不能这样做的内容?

如果您的表单经过验证,则您可以访问myForm已清理的\u数据:

print myForm.cleaned_data.get('description')
如果您想了解为什么无法访问myForm.description,则可以查看myForm的数据字典:

print myForm.__dict__

使用
django.forms
定义字段的方式只是一种方便的声明性语法;它不能真正代表最终表单类或其实例在属性方面的外观

表单有一个(在不深入它的情况下,元类是使用
class
关键字声明一个类,作为
\uuuuu init\uuuuu
方法是使用括号创建一个类的实例——一个用于定制所创建对象的钩子,在元类的情况下,它是一个
!)它在定义时从表单类中选取字段,并将其添加到
base\u字段
dict中。实例化表单时,其
base\u字段
会深入复制到实例上的
字段
属性中


一个混淆点可能是您使用
来访问要在模板中显示的字段——实际上,Django的模板引擎首先尝试使用字典样式
[]
访问来解析属性查找,而基表单类定义了一个方法来利用它,从表单实例的
fields
dict中查找适当的字段,并用
BoundField
包装,该包装知道如何使用表单中的字段和数据来显示字段。

您可以访问字段troughtdict

form.__dict__["fields"]["description"]

可以从表单实例的“字段”属性访问其字段

myForm.fields['description']
某些属性(如标签)可以通过以下方式访问:

myForm.fields['description'].label
不确定如何显示相应的值。有人有想法吗?

这是我的推荐信


我知道我可以使用已清理的数据访问它。我不明白的是为什么我不能使用属性本身来访问它:myForm.description。引擎盖下到底发生了什么阻止我访问它?谢谢!如何设置为仅显示特定的表单字段?我想从别人的角度来做这件事。
myForm.fields['description']
myForm.fields['description'].label