2012-02-29 9 views
1

免責事項:私はPythonの初心者ですが、Drupalプログラミング経験を持っていますbeginner:python名前空間の衝突ですか?

私は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 

本を/ forms.py)とdjangoのフォームです。だから、Pythonは

message = forms.CharField(widget=forms.Textarea()) 
+0

独自のインポート名を指定するfrom ____ import ___ as ___を使用することができます競合がある場合、この例では、競合が発生することはありませんが! form_for_modelはModelFormになり、このチュートリアルとは異なる使い方をしました。 –

+0

[回答を受け入れる]ことを忘れないでください(http://meta.stackexchange.com/a/5235/176476)) –

答えて

3

上記にこの文を参照してんた:

from django.forms import form_for_model 

は本当に唯一のモジュール・グローバル名前空間に名前form_for_modelを引き出し、既存の名前formsは影響を受けません。でもこの:それだけでその完全修飾形式で利用可能な名前になりますので、

import django.forms 

は、問題ではないだろう、(unambigiosあるとformsと衝突しない)django.forms

0

PHPと異なり、Pythonはの現在の名前空間にのみインポートし、各モジュールは独自の名前空間です。他のモジュールのインポートは現在のネームスペースに影響を与えません。

関連する問題