免责声明:我是python的新手,但拥有drupal编程经验
我正在阅读Django权威指南(http://www.djangobook.com/en/1.0/chapter07/)。发出后
python manage.py startapp books
python创建了包含views.py的books包。在本教程的后面,我们在views.py文件中输入以下内容:
# Create your forms here.
from django import forms
from django.forms import form_for_model
from models import Publisher
PublisherForm = forms.form_for_model(Publisher)
TOPIC_CHOICES = (
('general', 'General enquiry'),
('bug', 'Bug report'),
('suggestion', 'Suggestion'),
)
class ContactForm(forms.Form):
topic = forms.ChoiceField(choices=TOPIC_CHOICES)
message = forms.CharField(widget=forms.Textarea())
sender = forms.EmailField(required=False)
def clean_message(self):
message = self.cleaned_data.get('message', '')
num_words = len(message.split())
if num_words < 4:
raise forms.ValidationError("Not enough words!")
return
除非我输入错误或误解了某些内容(可能是其中之一),否则我们现在(貌似)会在表单(books / forms.py)和django表单之间发生冲突。那么,Python在
中引用了哪些内容message = forms.CharField(widget=forms.Textarea())
答案 0 :(得分:3)
本声明:
from django.forms import form_for_model
实际上只将名称form_for_model
拉入模块全局命名空间,现有名称forms
不受影响。即便如此:
import django.forms
不会有任何问题,因为它只能以完全限定的形式django.forms
(这是unambigios并且不会与forms
发生冲突)使名称可用。
答案 1 :(得分:0)
与PHP不同,Python只导入当前命名空间,每个模块都是自己的命名空间;其他模块中的导入不会影响当前的命名空间,反之亦然。
答案 2 :(得分:0)
虽然如果存在冲突,此示例不会引发冲突,但您可以使用from ____ import ___ as ___
指定自己的导入名称