如果您在视图中并希望使用Python检索应用程序名称(应用程序名称将用于进一步的逻辑),您将如何做?
你可以这样做:
from django.core.urlresolvers import resolve
....
resolve(request.path).app_name
见How to get current application in Django和resolve()
编辑:您现在可以使用request.resolver_match.app_name,避免第二次解决并避免导入。这样做:
request.resolver_match.app_name
另一种方法是获取当前对象或使用self。看到吼叫
obj.__module__.split('.')
这将返回一个列表,其中对象名称由'。'分隔。
也许这可以帮到你..
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将返回所有地址,您可以为您的应用和模型解析它...
您可以从model: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)
...
...
__package__
要么
__package__.rsplit('.', 1)[-1]
应该是最简单的方法。第二次将a.b.c
转换为c
。