初学者:python名称空间冲突?
免责声明:我是python新手,但有drupal编程经验 我正在读《Django权威指南》(http://www.djangobook.com/en/1.0/chapter07/). 发布后初学者: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 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