如何在 django 中使用 python 获取应用程序名称
如果您在视图中并且想要使用 Python 检索应用程序名称(应用程序名称将用于进一步的逻辑),您会怎么做?
If you are in the view and want to retrieve the app name using Python ( the app name will be used for further logic ), how would you do it ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
您可以这样做:
请参阅 如何在 Django 中获取当前应用程序 和 < a href="http://docs.djangoproject.com/en/dev/topics/http/urls/#resolve" rel="noreferrer">resolve()
编辑:您现在可以使用 request.resolver_match.app_name 避免解析第二个时间并避免导入。这样做:
You could do:
See How to get current application in Django and resolve()
EDIT: You can now use request.resolver_match.app_name which avoids resolving a second time and avoids an import. Do it this way:
或者
应该是最简单的方法。第二个将
abc
转换为c
。or
should be the easiest way. Second converts
a.b.c
toc
.您可以从模型中获取应用程序名称:
Book._meta.app_label
。我在 django/contrib/admin/widgets.py 中找到了:
You can get application name from model:
Book._meta.app_label
.I've found in
django/contrib/admin/widgets.py
:另一种方法是获取当前对象或使用 self.参见下文
这将返回一个列表,其中对象名称由“.”分隔。
Another way to do it is get the current object or use self. see bellow
This will return a list with the object name split up by the '.'
总而言之,如果您正在寻找代码编写位置的
app_name
,请使用以下内容:但是,如果您需要对象所在位置的
app_name
被调用(可能在编码应用程序之外的应用程序中),然后使用:so to sum up, If you're looking for the
app_name
of where your code is written, then use this:However, if you need the
app_name
of where the object is being called (which might be in an app other than coding app), then use this:也许这可以帮助你..url
将返回你所有的地址,你可以解析它为你的应用程序和模型...
maybe this can help you..
url will return you all adress and you can parse it for your app and model...
这个解决方案不是很简单,但它有效
This solution not very simple, but it works
您可以使用上下文处理器。
要为应用程序名称创建上下文处理器,请执行以下操作:
假设您有一个名为 myapp 的应用程序。在 myapp 目录中创建一个 context_processor.py
在 context_processor.py 中定义以下方法:
将上下文处理器添加到 settings.py 中的模板
<前><代码> 模板 = [
{
...
'选项': {
'上下文处理器':[
...
'myapp.context_processor.get_common_context',
],
},
},
]
访问模板中的 app_name。
<前><代码> {{ 应用程序名称 }}
使用 RequestContext 访问视图中的 app_name
You can use context processors.
To create context processor for an app name do the following:
Say you have an app named myapp. Inside myapp directory create a context_processor.py
In context_processor.py define following method:
Add your context processor to TEMPLATES in settings.py
Access app_name in your template.
Access app_name in your view using RequestContext
我相信更新的解决方案是
view.__module__
。这会从 Django 和 Django Rest Framework 返回您的app_name
。我的场景是从视图调用中动态使用
module
或app_name
,以便我可以对该特定模块进行访问权限检查。I believe the updated solution is
view.__module__
. This returns yourapp_name
both from Django and Django Rest Framework.My scenario was working with dynamically
module
orapp_name
from view call so that I can work with access permission check for that particular module.也许我的选择对某人有用:
maybe my option would work for someone: