2010-11-23 11 views
9

私は、Django 1.3 alphaを使用して2つのアプリケーションを持つプロジェクトを作成しています。私はクラスベースのビューのために1.3を使用します。これらの2つのアプリケーションでは、アプリケーションの実際のビューに継承される一連の共通基本ビュー・クラスがあります。基底クラスでは、ビューが "呼び出された"アプリケーションを見つける方法はありますか?例えば。 URLを使用して「現在の」アプリケーションを取得することはできますか? resolve(self.request.path)Djangoで現在のアプリケーションを取得する方法

答えて

7

あなたはビューについての情報を表示するモデルへのアクセスを得るためにself.modelにアクセスすることができ提供ジャンゴジェネリックリストと詳細ビューから継承されている場合は、そうでなければ、おそらくdjango's resolve()を使用しています。

また、あなたは好みのキーワードで呼び出す独自のViewサブクラスを作ることができます:

# views.py 
from django.views.generic.base import View 
class MyView(View): 
    app_name = None 

# urls.py 
from django.conf.urls.defaults import * 
from some_app.views import MyView 

urlpatterns = patterns('', 
    (r'^myview/', MyView.as_view(app_name='app_name')), 
) 

次にあなたがself.app_nameを介してアクセスすることができるはずです。

+1

私はresolve()から返されたオブジェクトがapp_name属性を含んでいることを知らなかった。トッププロジェクトのurl-configファイルを変更して、アプリケーション固有のurl-configsを含むインクルード呼び出しでapp_name引数を使用し、次にresolve()を使用してそこからapp_nameを取得しました。ありがとう! –

+0

私はこれを試しましたが、app_name変数は常に 'None'を返します。何かアドバイス? –

+0

どのように変数にアクセスしようとしていますか? –

関連する問題