python - 覆盖 AdminSite 以附加自定义 url

标签 python django django-admin

我按照手册中的描述覆盖了默认的 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/

相关文章:

python - 返回两个质数

python - PySide QSelectionModel.isRowSelected() 函数中的父级是什么?

django - 如何使用 Apache 和 Daphne 部署 django channel ?

python - Django 1.7(显然)没有在manage.py测试上运行迁移

Django admin 添加相关对象没有打开弹出窗口?

python - 计算时间复杂度为 O(nlogn) 的列表中的出现次数

Python 2D Array - 引用网格的特定部分

python - Django:如何将字节对象保存到 models.FileField?

django - Django-用户管理员-将组添加到list_display

python - django admin.autodiscover() urls 文件上的导入顺序