2011-05-14 3 views

답변

18

당신은 할 수 :

from django.core.urlresolvers import resolve 

.... 

resolve(request.path).app_name 

How to get current application in Djangoresolve()

편집을 참조하십시오 : 이제 두 번째 해결을 방지하고 수입을 방지 request.resolver_match.app_name를 사용할 수 있습니다. ...

from django.core import urlresolvers 
from django.contrib.contenttypes.models import ContentType 

content_type = ContentType.objects.get_for_model(self.__class__) 
url = urlresolvers.reverse("admin:%s_%s_change" % (content_type.app_label, 
     content_type.model), args=(self.id,)) 

URL이 모든 ADRESS을 반환하고 앱과 모델을 구문 분석 할 수 있습니다 ..

+0

*'resolve (request.path) .app_name' * - python3/django2에서는'django.urls import resolve'에서 왔습니다. 그리고 두 답이 모두 작동하지 않습니다. –

2

어쩌면이 당신을 도울 수 : 이런 식으로 수행 방법은 현재 개체를 얻거나 자기를 사용하는 것입니다. 노호 참조

obj.__module__.split('.') 

이렇게하면 '.'기호로 분리 된 개체 이름의 목록이 반환됩니다.

4

또 다른를

request.resolver_match.app_name 
+0

죄송합니다, obj 무엇입니까? –

1

모델명 : Book._meta.app_label에서 애플리케이션 이름을 얻을 수 있습니다.

가 나는 django/contrib/admin/widgets.py에서 발견했습니다

class RelatedFieldWidgetWrapper(forms.Widget): 
    ... 
    def get_context(self, name, value, attrs): 
     from django.contrib.admin.views.main import IS_POPUP_VAR, TO_FIELD_VAR 
     rel_opts = self.rel.model._meta 
     info = (rel_opts.app_label, rel_opts.model_name) 
     ... 
    ... 
0
__package__ 

또는

__package__.rsplit('.', 1)[-1] 

가장 쉬운 방법이 될 것이다. 초는 a.b.c에서 c으로 변환합니다.

관련 문제