[英]How to access class variable in Python?
我是Python编程的新手,想知道如何将在一个文件中声明的变量访问到另一个文件? 我正在使用Django,并且有两个文件:
forms.py
class ContactForm(forms.Form): full_name = forms.CharField(max_length=100) email = forms.EmailField() message = forms.CharField(max_length=1000)
views.py
from .forms import ContactForm def contact(request): e = ContactForm() toPrint = e.get(email) print(toPrint)
我只是测试它以在终端上打印,以帮助我学习如何访问这些变量以在views.py中使用它们
在视图中,您通常会传递进入表单的数据,然后可以像这样使用cleaned_data来获取它
def contact(request):
context = {}
if request.method == 'POST':
form = ContactForm(data=request.POST)
if form.is_valid():
email = form.cleaned_data.get('email', '')
# do something with email here??
else:
form = ContactForm()
context['form'] = form
return render(request, 'signup.html', context)
编辑:正如评论中指出的那样,由于某些django-magic,此答案在django的特定情况下不起作用。 但总的来说,这应该是正确的。
首先,应该在ContactForm
类的__init__
函数(构造函数)中声明变量。 然后将其存储在self
下:
class ContactForm(forms.Form):
def __init__(self):
super().__init__()
self.full_name = forms.CharField(max_length=100)
self.email = forms.EmailField()
self.message = forms.CharField(max_length=1000)
在两种情况下(如果您像保留代码一样使用代码,或者显式使用构造函数),则只需按以下方式访问变量即可:
e = ContactForm()
to_print = e.email
....
e = ContactForm()
如果您的表格经过验证,则可以通过
e.cleaned_data.get('email')
Django表单使用所谓的元类。 在这种特定情况下,它要做的是捕获表单上定义的所有Field
实例,并将它们放入名为declared_fields
的字典中。 您可以在此处查看源代码。 您将以ContactForm.declared_fields['email']
形式访问原始字段。
该表单将创建一个declared_fields
的fields
副本,并将其放在fields
属性中,以允许在单个表单实例中更改字段。 然后,您将如下访问字段:
e = ContactForm()
e.fields['email']
正如其他人所说,如果不是元类,则只需使用ContactForm.email
或e.email
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.