0

私は条件付きで2つの異なるURLパターンを使用しています。つまり、1つのURLでユーザータイプを条件付きでチェックし、それに応じてURLパターンを作成しています。

from django.conf.urls.defaults import *
from project import settings  
from accounts.models import UserProfile

profile=request.user.get_profile() 

urlpatterns=patterns('accounts.views',
        (r'^register/$','register',{'template_name':'accounts/     register.html'},'register'),
 )

try:
   profile.profile1
   urlpatterns+=patterns("profile1.views",
        (r'^dashboard/$','dashboard'),
   )
except UserProfile.DoesNotExist:
   urlpatterns+=patterns("profile2.views",
        (r'^dashboard/$','dashboard'),
   )

urlpatterns+=patterns('django.contrib.auth.views',
        (r'^login/$','login',{'template_name':'account/login.html'},'login'),
)

を使用してユーザープロファイルを取得しようとするとrequest.user.get_profile、djangoはリクエストが定義されていないと言います。それは本当ですが、インポートを使用してその場所までこのプロファイルを定義するにはどうすればよいですか、またはそのようなことを行うための他のより良い方法がありますか?

4

1 に答える 1

2

Python のコードは、他の場所で定義された変数に自動的にアクセスすることはありません。名前は、常に現在のモジュール内で定義するか、他の場所からインポートする必要があります。これは、他の Python 変数と同様にリクエストにも適用されます。

ただし、リクエスト変数を urls.py に取得できたとしても、これは機能しません。URLconf は、各リクエストに固有のものではなく、サーバー プロセス全体に一般的なものです。URL が評価される時点では、単に「リクエスト」や「ユーザー」などというものは存在しません。

これを行う正しい方法は、dashboardチェックrequest.userしてそこから正しい関数にディスパッチする単純なビューを定義することです。

于 2012-04-08T19:57:45.097 に答える