gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:24:53 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com