如何在django中使用python获取应用程序名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在django中使用python获取应用程序名称相关的知识,希望对你有一定的参考价值。

如果您在视图中并希望使用Python检索应用程序名称(应用程序名称将用于进一步的逻辑),您将如何做?

答案

你可以这样做:

from django.core.urlresolvers import resolve

....

resolve(request.path).app_name

How to get current application in Djangoresolve()

编辑:您现在可以使用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

以上是关于如何在django中使用python获取应用程序名称的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 python (django) 创建英语词典应用程序?

如何获取django应用程序中所有视图的列表?

如何在 Django 应用程序中获取有关登录用户的信息?

Python 脚本部署和发布 Django 应用程序的示例代码及注释

如何在同一子域上获取不同的 Django 应用程序以共享会话 cookie?

如何在 Python Django 中运行单元测试时禁用日志记录?