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