零、预备知识 单例对象

  方式一:__new__方法

  方式二:模块导入,只要在引入的文件中实例了这个对象,不管引道哪里,这个对象都指向同一个内存空间

 class My_singleton(object):
     def foo(self):
         print("ok")

 my_singleton = My_singleton()
from xxx import my_singleton
my_singleton.foo()

一、Xadmin之注册与生成url

在Xadmin.apps中:

 from django.apps import AppConfig
 from django.utils.module_loading import autodiscover_modules

 class XadminConfig(AppConfig):
     name = 'Xadmin'

     def ready(self):  #调用这个类时自动执行
         autodiscover_modules('Xadmin')  #从admin.py文件中复制,读取每个app中Xadmin.py文件

在Xadmin.py中:

 from django.conf.urls import re_path
 from django.shortcuts import HttpResponse

 class ModelXadmin(object):
     def __init__(self,model,site):
         self.model = model
         self.site = site

     def list_view(self,request): #查询界面
         return HttpResponse("list_view")
     def add_view(self,request):  #增加界面
         return HttpResponse("add_view")
     def change_view(self,request,id):  #修改界面
         return HttpResponse("change_view")
     def delete_view(self,request,id):  #删除界面
         return HttpResponse("delete_view")

     @property
     def urls(self):
         temp = []

         temp.append(re_path(r'^$',self.list_view))
         temp.append(re_path(r'^add/$',self.add_view))
         temp.append(re_path(r'^(\d+)/delete/$',self.delete_view))
         temp.append(re_path(r'^(\d+)/change/$',self.change_view))

         return temp,None,None

 class XadminSite(object):
     def __init__(self):
         self._registry = {}

     def register(self,model,Xadmin_class=None,**options):
         if not Xadmin_class:
             Xadmin_class = ModelXadmin
         self._registry[model] = Xadmin_class(model,self)  #{Book:ModelXadmin(Book)}

     @property
     def urls(self):

         temp = []

         for model,Xadmin_class in self._registry.items():
             app_name = model._meta.app_label   #取相应app的名字
             model_name = model._meta.model_name   #取相应model的名字

             temp.append(re_path(r'^{0}/{1}/'.format(app_name,model_name),Xadmin_class.urls))#

         return temp,None,None

 site = XadminSite()  #创建单例对象

在app的Xadmin.py中:

 from Xadmin.service import Xadmin
 from app02 import models

 Xadmin.site.register(models.Food)
 Xadmin.site.register(models.Order)

Django之Xadmin的更多相关文章

  1. Django+Celery+xadmin实现异步任务和定时任务

    Django+Celery+xadmin实现异步任务和定时任务 关注公众号"轻松学编程"了解更多. 一.celery介绍 1.简介 [官网]http://www.celerypro ...

  2. python框架Django使用xadmin管理后台数据

    Django使用xadmin管理后台数据 关注公众号"轻松学编程"了解更多. 作用:xadmin比Django内置的admin更美观.更方便. 一.导入xadmin(第三方库) 方 ...

  3. Django安装Xadmin步骤

    在Django中安装Xadmin替换原始的admin,下面介绍两种方法安装 第一种方法:pip安装 第一步: 直接pip安装xadmin pip install xadmin pip会同时安装上面三个 ...

  4. Django配置xadmin后台模板之坑(一)

    环境: Python3.6 + Django2.0 + xadmin2.0 一.安装 1.首先安装就会有一个坑,很多教程的安装是直接在虚拟环境下使用 pip install xadmin 或者 pip ...

  5. Django集成Xadmin list index out of range报错解决方案

    return self.render(context) File "C:\Python36\lib\site-packages\django\template\defaulttags.py& ...

  6. django 配置xadmin

    django xadmin本地安装 百度云 下载,激活码:bxhv,下载后不需要解压,直接本地 pip install xxx.zip django 版本需要 1.1.11, 1,添加app INST ...

  7. Django使用xadmin集成富文本编辑器Ueditor(方法二)

    一.xadmin的安装与配置1.安装xadmin,其中第一种在python3中安装不成功,推荐第二种或者第三种 方式一:pip install xadmin 方式二:pip install git+g ...

  8. django使用xadmin

    一.安装xadmin 由于我用的是Django2.0以后的版本 所以无法直接通过pip install xadmin来安装 即使安装成功了 也会报乱七八糟的错误 https://github.com/ ...

  9. Django的Xadmin使用

    Django Xadmin 通常在实际的开发当中, 除了前后端分离的项目, 还有一些前后端不分离的项目, 这样我们在访问不分离的页面的时候, 就可以通过Django自带的admin管理模块来轻松实现后 ...

随机推荐

  1. 013_实践HTTP206状态:部分内容和范围请求

    HTTP 2xx范围内的状态码表明了:"客户端发送的请求已经被服务器接受并且被成功处理了".HTTP/1.1 200 OK是HTTP请求成功后的标准响应,当你在浏览器中打开www. ...

  2. Python#常用的模块和简单用法

    目录 random 随机模块 os 文件夹模块: time 时间模块: matplotlab.pyplot 作图模块 mpl_toolkits.mplot3d 绘制3D图模块 Pygame Reque ...

  3. iOS开发基础-九宫格坐标(5)

    继续在iOS开发基础-九宫格坐标(4)的基础上进行优化. 一.改进思路 1)iOS开发基础-九宫格坐标(4)中 viewDidLoad 方法中的第21.22行对控件属性的设置能否拿到视图类 WJQAp ...

  4. Java 开发笔记2

    Java获取参数名称 https://blog.csdn.net/z69183787/article/details/81117525 DefaultParameterNameDiscoverer() ...

  5. swiper 轮播图,拖动之后继续轮播

    在此贴出swiper官网地址:https://www.swiper.com.cn/api/index.html 示例如下(官网示例): <script> var mySwiper = ne ...

  6. 如何给框架添加API接口日志

    前言 用的公司的框架,是MVC框架,看了下里面的日志基类,是操作日志,对增删改进行记录, 夸张的是一张业务的数据表 需要一张专门的日志表进行记录, 就是说你写个更新,添加的方法都必须写一遍操作日志,代 ...

  7. excel冻结标题栏,让标题栏不滚动的方法

    https://jingyan.baidu.com/article/148a1921f54afe4d71c3b18e.html

  8. GC Tools

    GC Tools There are multiple ways to enable the GC log: specifying either of the flags -verbose:gc or ...

  9. Vivado怎么使用In system debug(类似于chipscope的东西)

    流程 1.建立好工程后,首先设置综合选项为保留设计的层次结构,方便追查信号.

  10. codeforces 786E ALT

    题目链接:CF786E 输出方案暗示网络流 我们考虑最朴素的建图 由源点\(s\)连向所有人,容量为1:树上所有的边视作节点连向\(t\),流量为1:人向其路径上所有的树边连边,流量为\(inf\), ...