我是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中使用它们
答案 0 :(得分:0)
在您通常会传入表单中的数据的视图中,然后您可以使用cleaning_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)
答案 1 :(得分:0)
首先,您应该在__init__
类的ContactForm
函数(构造函数)中声明变量。然后将其存储在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
....
答案 2 :(得分:0)
e = ContactForm()
如果您的表单已经过验证,则可以通过
进行访问e.cleaned_data.get('email')
答案 3 :(得分:0)
Django表单使用所谓的元类。在这种特定情况下,它的作用是捕获表单上定义的所有Field
实例,并将它们放在名为declared_fields
的字典中。您可以看到源代码here。您将以ContactForm.declared_fields['email']
的身份访问原始字段。
表单会复制declared_fields
并将其放在fields
属性中,以允许更改单个表单实例中的字段。然后,您将按如下方式访问字段:
e = ContactForm()
e.fields['email']
正如其他人所说,如果不是元类,你只需使用ContactForm.email
或e.email
。