Python Django admin:正在从单个应用程序项目的URL中删除应用程序名称
我正在编写一个简单的Django应用程序,比如说,名为Python Django admin:正在从单个应用程序项目的URL中删除应用程序名称,python,django,django-admin,django-urls,Python,Django,Django Admin,Django Urls,我正在编写一个简单的Django应用程序,比如说,名为base,它有几个模型。我正在使用Django操作应用程序的数据。管理员可以通过默认的^admin/URL模式访问 除了Django默认的已安装的应用程序(减去Django.contrib.sites),base是我的项目中唯一安装的应用程序。有没有办法从URL中删除base/,这样我就可以通过使用/admin/model/等路径而不是/admin/base/model/来访问base的模型 我希望django.contrib.auth的模型
base
,它有几个模型。我正在使用Django操作应用程序的数据。管理员可以通过默认的^admin/
URL模式访问
除了Django默认的已安装的应用程序
(减去Django.contrib.sites
),base
是我的项目中唯一安装的应用程序。有没有办法从URL中删除base/
,这样我就可以通过使用/admin/model/
等路径而不是/admin/base/model/
来访问base
的模型
我希望
django.contrib.auth
的模型仍然可以通过/admin/auth/
访问 如果你不想把base
放在URL中,不要放在那里。除非你明确要求它在那里,否则它不会在那里。只需创建不带前缀的URL
编辑抱歉,我误读了你的问题:我以为你是在问你的应用程序自己的观点,而不是管理员的子部分
这很棘手。一种方法是使用钩子将URL添加到基本AdminSite。您可能需要从ModelAdmin.get_url方法中复制代码,并硬编码模型名称,因为没有自动执行此操作的方法。自定义或覆盖默认的Django管理站点非常容易。这是关于这个问题的答案。下面是覆盖默认管理站点的示例 在Django项目目录中创建一个
admin.py
(如果还没有)。为AdminSite创建子类
要从管理员URL中删除“appname”,请覆盖get\u url()
函数:
# myproject/admin.py
from django.contrib import admin
class MyAdminSite(admin.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
在项目目录中创建一个apps.py
(如果还没有):
在设置中注册此项。py
:
INSTALLED_APPS = [
...
'myproject.apps.MyAdminConfig', # replaces 'django.contrib.admin'
...
]
我假设管理员在其URLconf(如果有)中需要在应用程序模型之前输入应用程序名称-如果我删除了它,那么我只是使用
/model/
而没有在它之前输入应用程序名称,我显然会得到404。你是说我应该修改Django管理员的URLconf?有没有什么方法可以不用进入Python安装的站点包
,就可以覆盖它?
INSTALLED_APPS = [
...
'myproject.apps.MyAdminConfig', # replaces 'django.contrib.admin'
...
]