在Django项目shell(Python 3.5 + Django 1.11)中,我尝试了以下语句:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#f19b06"
android:pathData="M12,4l-1.41,1.41L16.17,11H4v2h12.17l-5.58,5.59L12,20l8,-8z"/>
</vector>
但是我不能获取我的from django import forms
class ContactForm(forms.Form):
subject = forms.CharField()
email = forms.EmailField(required=False)
message = forms.CharField()
print( ContactForm.subject )
属性。我收到错误消息:
ContactForm.subject
为什么会这样?是由某种隐藏的Python语言技巧引起的吗?
答案 0 :(得分:3)
是的,表单具有特殊的元类,可将定义的字段提升到form.base_fields
中。
因此,如果您需要访问该字段,可以执行ContactForm.base_fields['subject']
,但要注意,对该字段的修改将在请求中保留。
如果您只需要为单个请求修改表单字段,请覆盖表单的__init__
,然后在self.fields
中修改表单字段(注意: not {{ 1}}),是在base_fields
中创建的类.base_fields
的深层副本。
例如,如果您需要为每个用户做某事-将其放入代码中,
Form.__init__