零、预备知识 单例对象

  方式一:__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. L1-8 矩阵A乘以B (15 分)

    给定两个矩阵A和B,要求你计算它们的乘积矩阵AB.需要注意的是,只有规模匹配的矩阵才可以相乘.即若A有R​a​​行.C​a​​列,B有R​b​​行.C​b​​列,则只有C​a​​与R​b​​相等时,两 ...

  2. Vue-异步组件

    一般情况下,在代码开头引入组件: import Vue from 'vue' import Router from 'vue-router' import Home from '@/pages/hom ...

  3. 广师大学习笔记之文本统计(jieba库好玩的词云)

    1.jieba库,介绍如下: (1) jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组:除此之外,jieba 库还提供了增加自定 ...

  4. SpringCloud(6)分布式配置中心Spring Cloud Config

    1.Spring Cloud Config 简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组 ...

  5. 容器中的JVM资源该如何被安全的限制?

    前言 Java与Docker的结合,虽然更好的解决了application的封装问题.但也存在着不兼容,比如Java并不能自动的发现Docker设置的内存限制,CPU限制. 这将导致JVM不能稳定服务 ...

  6. idea在Terminal中使用maven指令

    如果无法直接使用mvn指令,那么这里需要配置你idea中的maven的环境变量, 先说maven在idea中的位置,在你idea安装目录下的\plugins\maven 接下来配置环境变量:在你的用户 ...

  7. 2019-04-03 研究EasyWeb有感

    今天从往常睡到11点多才起床的状态中一下子转回9点前起床,起床第一件事就是开始研究这框架 1. 根据这框架的说明,首先搭建IDEA开发环境,下载.破解:当从EasyWeb官网下载了两个框架(一个是前端 ...

  8. Lodop打印表格带页头页尾 高度是否包含页头页尾

    通过设置TableHeightScope,可以实现对ADD_PRINT_TABLE,表格带页头页尾,查看本博客另一篇博文:Lodop打印表格带页头页尾 自动分页每页显示头尾 超文本超过打印项高度,会自 ...

  9. 根据 Power BI Desktop(预览版)中的报表页创建工具提示

    根据 Power BI Desktop 中创建的报表页,可创建直观丰富的报表工具提示,这些提示在你将鼠标悬停在视觉对象上时显示. 通过创建用作工具提示的报表页,使自定义工具提示包含视觉对象.图像以及在 ...

  10. 初学cdq分治学习笔记(可能有第二次的学习笔记)

    前言骚话 本人蒟蒻,一开始看到模板题就非常的懵逼,链接,学到后面就越来越清楚了. 吐槽,cdq,超短裙分治....(尴尬) 正片开始 思想 和普通的分治,还是分而治之,但是有一点不一样的是一般的分治在 ...