2010-11-23 2 views
9

두 장의 응용 프로그램으로 프로젝트를 생성하기 위해 장고 1.3 알파를 사용하고 있습니다. 클래스 기반 뷰 때문에 1.3을 사용합니다. 이 두 응용 프로그램에는 응용 프로그램의 실제보기에 상속되는 일련의 공통 기본보기 - 클래스가 있습니다. 기본 클래스에서 뷰가 "호출 된"응용 프로그램을 찾는 방법이 있습니까? 예 : URL을 사용하여 "현재"애플리케이션을 얻을 수 있습니까? resolve(self.request.path) :장고에서 현재 응용 프로그램을 얻는 방법

답변

7

당신이보기에 대한 정보를 표시 모델에 액세스 할 self.model에 액세스 할 수 있습니다 제공 장고 일반 목록과 상세 뷰에서 상속하는 경우, 그렇지 않으면 당신은 아마 django's resolve()를 사용하는 것입니다.

# 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을 통해 액세스 할 수 있어야합니다 :

당신은 또한 당신의 선택의 키워드로 전화를 자신의 View 서브 클래스를 만들 수 있습니다.

+1

resolve()에서 반환 된 객체가 app_name 속성을 포함하고 있는지 알지 못했습니다. 내 상위 프로젝트 url-config 파일을 응용 프로그램 특정 url-configs를 포함하는 include 호출에서 app_name 인수를 사용하도록 변경 한 다음 resolve()를 사용하여 거기에서 app_name을 가져 왔습니다. 감사! –

+0

이 시도했지만 app_name 변수는 항상 '없음'을 반환합니다. 어떤 충고? –

+0

어떻게 변수에 액세스하려고합니까? –

관련 문제