2012-04-08 22 views
0

条件付きで2つの異なるURLパターンを使用しています.1つのURLで意味します。私は条件付きでusertypeを確認してからURLパターンを作成しています。フォローは私のurls.pydjangoの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は要求が定義されていないと言います。それは本当ですが、私はこのプロファイルをいくつかのインポートを使用してその場所まで定義することができますか、またはそのようなことを行うための他のよりよい方法がありますか?

答えて

2

Pythonのコードでは、他の場所で定義されている変数に自動的にアクセスすることはできません。名前はでなければならず、常にを現在のモジュール内で定義するか、または他の場所からインポートする必要があります。これは他のPython変数と同じくらい要求に適用されます。

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

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

+0

+1このような詳細な回答については、どのように現在の機能にディスパッチできますか? 2つの異なる関数を呼び出し、それらの関数の応答を返すだけですか? – Hafiz

+0

はい、そうです。 –

+0

大丈夫、Daniel – Hafiz

関連する問題