Как получить имя приложения с помощью Python в Django - PullRequest
16 голосов
/ 14 мая 2011

Если вы находитесь в представлении и хотите получить имя приложения с помощью Python (имя приложения будет использоваться для дальнейшей логики), как бы вы это сделали?

Ответы [ 5 ]

23 голосов
/ 14 мая 2011

Вы можете сделать:

from django.core.urlresolvers import resolve

....

resolve(request.path).app_name

См. Как получить текущее приложение в Django и resol ()

РЕДАКТИРОВАТЬ: теперь вы можете использовать request.resolver_match.app_name , что позволяет избежать повторного разрешения и избежать импорта. Сделайте это так:

request.resolver_match.app_name
4 голосов
/ 09 февраля 2018

Вы можете получить название приложения из модели: 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)
        ...
    ...
4 голосов
/ 15 декабря 2014

Другой способ сделать это - получить текущий объект или использовать self. смотри ниже

obj.__module__.split('.')

Это вернет список с именем объекта, разделенным на '.'

3 голосов
/ 03 марта 2018
__package__

или

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

должно быть самым простым способом.Секунда преобразует a.b.c в c.

3 голосов
/ 09 июля 2012

может быть, это может помочь вам ..

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 вернет вам все адреса, и вы сможете проанализировать их для вашего приложения и модели ...

...