我按照手册中的描述覆盖了默认的 AdminSite 类,尽管那里关于这部分的信息太纯粹了。
我的 gs/admin.py 文件:
from django.contrib.admin import AdminSite
from django.conf.urls import patterns, url
from gs.views import *
class AdminSiteGs(AdminSite):
def get_urls(self):
urls = super(AdminSiteGs, self).get_urls()
urls += patterns('',
url(r'^my_admin_view/$', self.admin_view(my_admin_view))
)
return urls
admin_site_gs = AdminSiteGs()
gs 这是我的应用程序和项目名称。
gs/urls.py 文件:
from django.conf.urls import patterns, include, url
from page import views
from gs.admin import admin_site_gs
urlpatterns = patterns('',
url(r'^admin/', include(admin_site_gs.urls)),
)
我有一个名为 page 的应用程序,我在其中放置了 admin.py 文件:
from gs.admin import admin_site_gs
from page.models import Page, Menu
from django.contrib import admin
class PageAdmin(admin.ModelAdmin):
list_display = ('name', 'url', 'page_type')
class MenuAdmin(admin.ModelAdmin):
list_display = ('name', 'code')
admin_site_gs.register(Page, PageAdmin)
admin_site_gs.register(Menu, MenuAdmin)
所以这里没有任何工作 =(/admin/my_admin View (它返回 404),也没有主管理页面 /admin。我没有看到我的模型我在 page/admin.py 文件中注册。
这听起来很有趣,但我尝试了所有员工在 3-4 小时内工作 =)) 正如您可能猜到的那样,我在 Django 和 Python 方面都是新手...我现在只想知道如何附加自定义我重写的 AdminSite 类的 URL 和 View ?
我删除了 autodiscover
方法,所以现在 Django 似乎看不到文件 page/admin.py 的任何内容。
但是第一个问题比较有趣,为什么我在尝试访问/admin/my_admin页面时出现404错误...
PS为什么开头的问候语被删了o_O
最佳答案
根据文档,您为自定义管理 View 定义的任何 URL 模式都必须出现在管理模式之前:https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_urls
尝试:
def get_urls(self):
urls = super(AdminSiteGs, self).get_urls()
my_urls = patterns('',
url(r'^my_admin_view/$', self.admin_view(my_admin_view))
)
return my_urls + urls
你不应该像这样包含这些模式:
urlpatterns = patterns('',
url(r'^admin/', include(admin_site_gs.urls)), # not needed
)
关于python - 覆盖 AdminSite 以附加自定义 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15294124/