Görünümde iseniz ve uygulama adını Python kullanarak almak istiyorsanız (uygulama adı daha fazla mantık için kullanılacaktır), nasıl yapardınız?django'da python kullanarak uygulama adı nasıl edinilir
cevap
Sen yapabilirdi:
from django.core.urlresolvers import resolve
....
resolve(request.path).app_name
How to get current application in Django ve resolve()
EDIT Bkz: Artık ikinci kez çözme önler ve ithalat önler request.resolver_match.app_name kullanabilirsiniz. ...
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 sen iyi adresi dönecektir ve uygulamanız ve model için ayrıştırabilir ..
belki bu size yardımcı olabilir: bu şekilde yapın Bunu yapmanın yolu güncel nesneyi elde etmek veya kendini kullanmaktır.
obj.__module__.split('.')
Bu tarafından bölünmüş nesne adıyla bir listesini döndürür feryat bakınız ''
Başka
request.resolver_match.app_name
Üzgünüm, obj nedir? –
Modelden uygulama adı alabilirsiniz: Book._meta.app_label
.
ben django/contrib/admin/widgets.py
bulduğum:
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)
...
...
__package__
veya
__package__.rsplit('.', 1)[-1]
kolay yolu olmalıdır. İkincisi
a.b.c
'u
c
'a dönüştürür.
* 'çöz (request.path) .app_name' * - python3/django2 içinde' django.urls import resolve'' dır. Ve her iki cevabın da işe yaramadı. –