初学者:python名称空间冲突?

初学者:python名称空间冲突?,python,django,oop,Python,Django,Oop,免责声明:我是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 djang

免责声明:我是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
本声明:

from django.forms import form_for_model
实际上,只将模型的名称
form\u拉入模块全局名称空间,已经存在的名称
forms
不受影响。即便如此:

import django.forms

这不会是一个问题,因为它只以完全限定的形式提供名称,
django.forms
(这是明确的,不会与
形式发生冲突)。

与PHP不同,Python只导入当前名称空间,每个模块都是自己的名称空间;其他模块中的导入不会影响当前名称空间,反之亦然。

尽管此示例不会导致冲突,但如果存在冲突,您可以使用
from\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu


谢谢你们两位!_模型的表单_现在是ModelForm,使用方式与本教程不同。别忘了;)
import django.forms