gpt4 book ai didi

python - 将菜单项添加到 Django 管理站点

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

我想做类似How to add report section to the Django admin?的事情其中解释了如何为管理站点注册自定义端点。如果我以这种方式注册 URL,如何添加指向该 View 的链接?到目前为止我发现的唯一方法是这样的:

class CustomAdmin(admin.ModelAdmin):
def changelist_view(self, request, extra_context=None):
return render(request, 'my_page.html')


class ProxyModel(models.MyModel):
class Meta:
verbose_name = 'Report'
verbose_name_plural = 'Report'
proxy = True

admin.site.register(ProxyModel, CustomAdmin)

这看起来像是代码味道,至少有两个原因:

  1. 我正在重写 changelist_view() 以呈现我自己的报告模板,该模板不是“更改列表”。

  2. 即使报表不依赖于某个模型或依赖于多个模型,它也需要代理模型。

有更好的方法吗?

最佳答案

覆盖基本管理模板以便为您的自定义菜单添加一个部分,然后您应该能够使用其中的 {% url ... %} 标记来指向您的查看/秒。

参见:Overriding admin templates

您甚至可以为这些菜单项建立一个名为 AdminMenuItems 的模型。

class AdminMenuItems(models.Model):
title = models.CharField(max_length=255)
# The name of your url according your urls conf.
url_name = models.CharField(max_length=255)

然后在您的自定义管理模板中,它可能类似于:

<ul>
{% for item in menu_intems %}
<li><a href="{% url item.url_name %}">item.title</a></li>
{% endfor %}
</ul>

您可以通过 context processor 将这些项目添加到上下文中.

关于python - 将菜单项添加到 Django 管理站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54601455/

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