如果您在視圖中並希望使用Python檢索應用程序名稱(應用程序名稱將用於進一步的邏輯),那麼您將如何做?如何在django中使用python獲取應用程序名稱
12
A
回答
18
你可以這樣做:
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
2
也許這可以幫助你..
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,))
網址將返回所有ADRESS,你可以分析它爲您的應用程序和模型...
4
另一個方法是獲取當前對象或使用self。見下圖
obj.__module__.split('.')
這將返回一個列表,其中的對象名稱由'。'分割。
+0
對不起,什麼是obj? – 2018-03-03 15:55:59
1
您可以從型號獲得應用程序名稱: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)
...
...
0
__package__
或
__package__.rsplit('.', 1)[-1]
應該是最簡單的方法。其次將a.b.c
轉換爲c
。
相關問題
- 1. 如何在C#中使用.exe獲取應用程序名稱?
- 2. 如何從進程名稱獲取應用程序名稱?
- 3. 在Django模型中獲取應用程序名稱
- 4. 如何在Windows中獲取進程的應用程序名稱?
- 5. 如何從python獲取應用程序名稱?
- 6. 如何獲得在Django記錄儀應用程序名稱
- 7. 如何在laravel中獲取應用程序名稱?
- 8. 如何在Rake任務中獲取Rails應用程序名稱?
- 9. 如何在C#中獲取當前應用程序的名稱
- 10. 如何在android中獲取應用程序的名稱?
- 11. 如何在iOS應用程序中獲取Estimote Beacon名稱?
- 12. 如何從android中的進程獲取應用程序名稱?
- 13. 獲取應用程序名稱
- 14. 獲取應用程序的名稱
- 15. 如何使用c#獲取任務欄中應用程序的進程名稱?
- 16. 從軟件包名稱中獲取應用程序名稱
- 17. 如何獲取域名的URL和應用程序名稱?
- 18. 如何從Android的包名獲取應用程序名稱?
- 19. iOS從應用程序名稱獲取應用程序圖標
- 20. Ext JS - 如何從ViewModel中獲取應用程序的名稱?
- 21. 如何獲取ios中卸載的應用程序名稱?
- 22. 如何從應用程序實例中獲取表單名稱?
- 23. 如何獲取Config.groovy中的Grails應用程序名稱?
- 24. 如何在Linux下使用Python獲取進程名稱?
- 25. 從進程名稱獲取應用程序名稱
- 26. 如何獲取該應用程序中的文件的Django應用程序名稱?
- 27. 如何以編程方式獲取應用程序的名稱?
- 28. 如何從進程C#獲取應用程序名稱
- 29. 如何獲取應用程序的進程名稱?
- 30. 如何從我的kayboard應用程序獲取應用程序包名稱
*'resolve(request.path).app_name' * - 在python3/django2中它是'from django.urls import resolve'。而你的答案都不起作用。 – 2018-03-03 15:45:54