Q: 如何在xadmin自定义菜单, 自定义页面
A:
- 在xadmin.py,GlobalSettings中自定义菜单
- 自定义视图函数,并获取原来的菜单等信息(主要是为了用xadmin的模板),具体的自己看xadmin源码
- 在adminx.py中注册路由
- html继承。
举例:
xadmin.py:
class GlobalSetting:
site_title = 'XX后台管理'
site_footer = 'XX公司'
# menu_style = 'accordion' # 设置app折叠
def get_site_menu(self):
return (
{'title': '自定义菜单',
'menus': (
{
'title': '自定义页面',
'url': '/admin/testview/',
},
)
},
)
# 需要设置权限的话
# def get_site_menu(self):
# return (
# {'title': '原来model',
# 'perm': self.get_model_perm(Case, 'view'),
# 'menus': (
# {
# 'title': '新',
# 'url': '/admin/test_view2/',
# # 'perm': self.get_model_perm(ZVipbalanceList, 'view'),
# },
# )
# },
# )
views.py:
from xadmin.views import CommAdminView
from django.shortcuts import render
class TestView(CommAdminView):
def get(self, request):
context = super().get_context()
title = "会员延期"
# context["breadcrumbs"].append({'url': '/cwyadmin/', 'title': title})
context["title"] = title
context["context1"] = [1, 2, 3]
return render(request, 'thehive/test.html', context) # 主目录的 template下的 html文件
thehive/test.html
{% extends 'xadmin/base_site.html' %}
{# 例 展示本地文件内容#}
{% block nav_form %}
<h3>{{ title }}</h3>
{% for i in context1 %}
<p>{{ i }}</p>
{% endfor %}
{% endblock %}
xadmin.py:
import xadmin
from .views import TestView
xadmin.site.register_view("testview/", TestView, name="testview")
效果图:
###