gpt4 book ai didi

python - 在没有模型的情况下将自定义页面添加到 django admin

转载 作者:行者123 更新时间:2023-12-04 20:33:01 27 4
gpt4 key购买 nike

我正在尝试在没有模型关联的情况下向管理员添加自定义页面。

这是我到目前为止所取得的成就。

class MyCustomAdmin(AdminSite):

def get_urls(self):
from django.conf.urls import url

urls = super(MyCustomAdmin, self).get_urls()
urls += [
url(r'^my_custom_view/$', self.admin_view(MyCustomView.as_view()))
]
return urls

class MyCustomView(View):
template_name = 'admin/myapp/views/my_custom_template.html'

def get(self, request):
return render(request, self.template_name, {})

def post(self, request):
# Do something
pass

admin_site = MyCustomAdmin()

admin_site.register(MyModel1)
admin_site.register(MyModel2)
# etc...

这实际上是有效的,但问题是,使用此解决方案,我从 Django 管理界面(帐户、身份验证、社交帐户、站点)中丢失了一些应用程序。

最佳答案

这是因为您的其他管理员正在使用默认值 admin.site .您需要完全替换默认的 admin.site用你自己的 as explained here (您可能还想要 read this too )。

或者你可以通过猴子补丁默认 admin.site.get_urls() 来做小 pig 式的。方法:

from django.contrib import admin

_admin_site_get_urls = admin.site.get_urls

def get_urls():
from django.conf.urls import url
urls = _admin_site_get_urls()
urls += [
url(r'^my_custom_view/$',
admin.site.admin_view(MyCustomView.as_view()))
]
return urls

admin.site.get_urls = get_urls

法律免责声明:对于此“解决方案”的任何不必要的副作用,我概不负责,包括(但不限于)您的同事在下一次代码审查中为您辩护。这是一个肮脏的解决方案。一团糟。它很臭。这是邪恶的。你不应该那样做,真的。

关于python - 在没有模型的情况下将自定义页面添加到 django admin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41423711/

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