Cómo obtener un nombre de aplicación usando python en django

Si está en la vista y desea recuperar el nombre de la aplicación usando Python (el nombre de la aplicación se usará para una lógica adicional), ¿cómo lo haría?

Podrías hacerlo:

from django.core.urlresolvers import resolve .... resolve(request.path).app_name 

Vea Cómo obtener la aplicación actual en Django y resolver ()

EDITAR: Ahora puede usar request.resolver_match.app_name que evita resolver una segunda vez y evita una importación. Hacerlo de esta forma:

 request.resolver_match.app_name 

Otra forma de hacerlo es obtener el objeto actual o usar uno mismo. Ver abajo

 obj.__module__.split('.') 

Esto devolverá una lista con el nombre del objeto dividido por ‘.’

Tal vez esto pueda ayudarle..

 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 le devolverá toda la dirección y puede analizarla para su aplicación y modelo …

Puede obtener el nombre de la aplicación del modelo: Book._meta.app_label .

He encontrado en 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) ... ... 
 __package__ 

o

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

Debería ser la forma más fácil. Segundo convierte abc a c .