零、预备知识 单例对象

  方式一:__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. MATLAB accumarray

    先看看subs和val的具体内容 subs = [1 1 1; 2 1 2; 2 3 2; 2 1 2; 2 3 2]; subs = 1     1     1 2     1     2 2    ...

  2. 纯代码系列:Python实现验证码图片(PIL库经典用法用法,爬虫12306思路)

    现在的网页中,为了防止机器人提交表单,图片验证码是很常见的应对手段之一.这里就不详细介绍了,相信大家都遇到过. 现在就给出用Python的PIL库实现验证码图片的代码.代码中有详细注释. #!/usr ...

  3. jeecg字典表-系统字典

    新建字典 录入字典信息 添加类型 录入完类型后效果 新建列表用户 保存 同步数据库 同步完之后,对应的数据库中会创建对应的表. 测试表功能 保存之后,数据库保存对应的字段 生成代码 刷新工程之后,生成 ...

  4. 30分钟了解Springboot整合Shiro

    项目结构截图: 项目在结构上没有任何特殊之处,基本就是MVC的传统结构重点需要关注的是3个Entity类.2个Controller类和1个Config类. 首先,提供pom的完整文档结构: <p ...

  5. Leetcode 226. Invert Binary Tree(easy)

    Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Trivia:This problem was ...

  6. js-webpack自动化构建工具

    ###1.webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler) 四个核心概念: 入口(entry) 输出(output) loader 插件(pl ...

  7. linux下安装PHP扩展memcache

    公司的服务器 CentOS 7.5,PHP 5.6 下面都是最新的版本(支持到PHP5.6) 如需php7  下支持memcache扩展,请移步   https://www.cnblogs.com/h ...

  8. PHP artisan migrate 报错显示 could not find driver ,怎么办?

    记录下自己的错误 一. 1.原因是没有pdo扩展导致的, 2.解决办法:打开php.ini,然后去掉以下两行代码之前的分号(:)即可.如下: extension=php_pdo_firebird.dl ...

  9. Nginx整合tomcat,实现反向代理和负载均衡

    1.Nginx与Tomcat整合,通过Nginx反向代理Tomcat. Nginx安装路径为:/usr/local//nginx 首先切换路径到:/usr/local//nginx/conf通过命令  ...

  10. openstack——删除网络

    #!/bin/bash #delete vm for vim in `nova list |awk '{if( NR > 2 ) {print $2}}'`;do nova delete $vi ...