Django 2.2:有没有办法从管理网址中删除应用程序名称?
Django 2.2 : Is there any way to remove app name from admin urls?
我正在使用 Django 内置管理面板,有什么方法可以从网址中删除应用名称吗?
如果我想访问用户列表,它会将我重定向到 27.0.0.1:8000/admin/auth/user/
我可以在没有应用名称 auth
的情况下实现 27.0.0.1:8000/admin/user/
吗?
谢谢,
如文档所述 here 您可以创建自定义 AdminSite
并覆盖 get_urls
方法。这个简单的代码应该可以完成工作:
在你的common.admin.py
from django.contrib.admin import AdminSite
class MyAdminSite(AdminSite):
def get_urls(self):
urlpatterns = super().get_urls()
for model, model_admin in self._registry.items():
urlpatterns += [
path('%s/' % (model._meta.model_name), include(model_admin.urls)),
]
return urlpatterns
my_admin = MyAdminSite('My Admin')
my_admin.register(YourModel)
...
请注意,您使用新的自定义 AdminSite
实例注册您的模型。
然后在你的项目中urls.py
from common.admin import my_admin as admin
from django.urls import path
urlpatterns = [
path('admin/', admin.urls),
# Your other patterns
]
我正在使用 Django 内置管理面板,有什么方法可以从网址中删除应用名称吗?
如果我想访问用户列表,它会将我重定向到 27.0.0.1:8000/admin/auth/user/
我可以在没有应用名称 auth
的情况下实现 27.0.0.1:8000/admin/user/
吗?
谢谢,
如文档所述 here 您可以创建自定义 AdminSite
并覆盖 get_urls
方法。这个简单的代码应该可以完成工作:
在你的common.admin.py
from django.contrib.admin import AdminSite
class MyAdminSite(AdminSite):
def get_urls(self):
urlpatterns = super().get_urls()
for model, model_admin in self._registry.items():
urlpatterns += [
path('%s/' % (model._meta.model_name), include(model_admin.urls)),
]
return urlpatterns
my_admin = MyAdminSite('My Admin')
my_admin.register(YourModel)
...
请注意,您使用新的自定义 AdminSite
实例注册您的模型。
然后在你的项目中urls.py
from common.admin import my_admin as admin
from django.urls import path
urlpatterns = [
path('admin/', admin.urls),
# Your other patterns
]