提交根评论
显示根评论
--- render显示
--- ajax显示 提交子评论 显示子评论
---- render显示
---- Ajax显示(扩展) 评论树 博客:富文本编辑器
beautfulSoup模块 ret=Book.objects.all().exist() # sql; limit if ret:
print("OK") Book.objects.all().distinct() # XXXX
select distinct(age) from Book
Book.objects.all().values("title").distinct()
sql:

  单表处理:
Book id title price publish email addr
python 苹果出版社 @qq.com 北京
go 橘子出版社 @qq.com 南京
java 橘子出版社 @qq.com 南京
linux 橘子出版社 @qq.com 南京 ###################一对多######################多表: Book id title price publish_id
python
go
java
linux Publish id name email addr
苹果出版社 @qq.com 北京
橘子出版社 @qq.com 南京 结论: 一旦确定表关系是一对多,那么关联字段建在多的表中 book: Foreignkey publish_id refference Publish(id) #######################多对多################################# Book id title price publish_id
python
go
java
linux Author id name age
alex
liwen Author_Book id author_id book_id 结论;一旦是多对多的关系:需要建立第三张关系表 #######################一对一################################# Author id name age
alex
liwen AuthorDetail id tel gf author_id(unique)
钢蛋
铁锤 SELECT
"app01_book"."title" FROM "app01_publish"
LEFT OUTER JOIN "app01_book" ON ("app01_publish"."nid" = "app01_book"."publish_id")
WHERE "app01_publish"."name" = 苹果出版社 SELECT
"app01_book"."title" FROM "app01_book" INNER JOIN
"app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid")
WHERE "app01_publish"."name" = 苹果出版社 SELECT "app01_book"."title", "app01_publish"."name"
FROM "app01_book" INNER JOIN
"app01_book_authors" ON ("app01_book"."nid" = "app01_book_authors"."book_id")
INNER JOIN "app01_author" ON ("app01_book_authors"."author_id" = "app01_author"."nid") INNER JOIN "app01_authordetail" ON ("app01_author"."authorDetail_id" = "app01_authordetail"."nid")
INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") WHERE "app01_authordetail"."telephone" LIKE % ESCAPE '\'
sql:

  单表处理:
Book id title price publish email addr
python 苹果出版社 @qq.com 北京
go 橘子出版社 @qq.com 南京
java 橘子出版社 @qq.com 南京
linux 橘子出版社 @qq.com 南京 ###################一对多######################多表: Book id title price publish_id
python
go
java
linux Publish id name email addr
苹果出版社 @qq.com 北京
橘子出版社 @qq.com 南京 结论: 一旦确定表关系是一对多,那么关联字段建在多的表中 book: Foreignkey publish_id refference Publish(id) #######################多对多################################# Book id title price publish_id
python
go
java
linux 聚合与分组 # 统计不止一个作者的图书名称: select book.title,Count(author.name) as c from book inner join book-authors on ...
inner join author on ... group by book.id having c> admin配置参数 后台数据库管理页面 admin model: 对每一个app下的model设计出增伤改查4个url 查看book:
http://127.0.0.1:8000/admin/app01/book/
添加book:
http://127.0.0.1:8000/admin/app01/book/add/
编辑book:
http://127.0.0.1:8000/admin/app01/book/1/change/
删除book:
http://127.0.0.1:8000/admin/app01/book/1/delete/ 注册:
from django.contrib import admin # Register your models here. from .models import * from django.utils.safestring import mark_safe class BookConfig(admin.ModelAdmin): def deletes(self):
return mark_safe("<a href=''>删除</a>") list_display = ["title","price","publishDate",'publish',deletes]
list_display_links = ["price"]
list_filter=["price","title","authors","publish"]
list_editable=["title",] search_fields=["title","price"] def patch_init(self,request,queryset): queryset.update(price=) patch_init.short_description = "批量初始化" actions = [patch_init,] change_list_template="list.html"
fields = ('title',) admin.site.register(Book,BookConfig) admin.site.register(Publish)
admin.site.register(Author)
admin.site.register(AuthorDetail) Admin的实现流程:
启动:
import admin
def autodiscover():
autodiscover_modules('admin', register_to=site) 执行每一个app下的admin.py文件
注册 单例模式 设计URL Xadmin组件 ModelForm组件 CRM Xadmin组件
权限
crm '''
select Max(book.price) as max_price from author inner join book_authors on ...
inner join join book on ... group by author.name ''' Author id name age
alex
liwen Author_Book id author_id book_id 结论;一旦是多对多的关系:需要建立第三张关系表 #######################一对一################################# Author id name age
alex
liwen AuthorDetail id tel gf author_id(unique)
钢蛋
铁锤 SELECT
"app01_book"."title" FROM "app01_publish"
LEFT OUTER JOIN "app01_book" ON ("app01_publish"."nid" = "app01_book"."publish_id")
WHERE "app01_publish"."name" = 苹果出版社 SELECT
"app01_book"."title" FROM "app01_book" INNER JOIN
"app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid")
WHERE "app01_publish"."name" = 苹果出版社 SELECT "app01_book"."title", "app01_publish"."name"
FROM "app01_book" INNER JOIN
"app01_book_authors" ON ("app01_book"."nid" = "app01_book_authors"."book_id")
INNER JOIN "app01_author" ON ("app01_book_authors"."author_id" = "app01_author"."nid") INNER JOIN "app01_authordetail" ON ("app01_author"."authorDetail_id" = "app01_authordetail"."nid")
INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") WHERE "app01_authordetail"."telephone" LIKE % ESCAPE '\'
 ORM分组查询

     admin 参数配置

     admin流程
() 启动
autodiscover_modules('admin', register_to=site) () 注册
单例模式
admin.site=AdminSite(): 单例对象 class AdminSite(object):
def __init__(self, name='admin'):
self._registry = {} def register(self, model, admin_class=None, **options):
if not admin_class:
admin_class = ModelAdmin self._registry[model] = admin_class(model, self) # {Book:ModelAdmin(Book)} admin.site.register(Book) # admin.site._registry={Book:ModelAdmin(Book)}
admin.site.register(Publish) # admin.site._registry={Book:ModelAdmin(Book),Publish:ModelAdmin(Publish)} class Authoconfig(admin.ModelAdmin):
pass admin.site.register(Author,Authoconfig) # admin.site._registry={Book:ModelAdmin(Book),Publish:ModelAdmin(Publish),Author:Authoconfig(Author)} () 设计URL 为每一个app下的model设计增删改查4个url,以book为例:
127.0.:/admin/app01/book/
127.0.:/admin/app01/book/add
127.0.:/admin/app01/book//change/
127.0.:/admin/app01/book//delete/ url.py:
[
url(r'^index/', index), # index(reqeust)
] {
<class 'django.contrib.auth.models.Group'>: <django.contrib.auth.admin.GroupAdmin object at 0x000000000B5CA5F8>, <class 'django.contrib.auth.models.User'>: <django.contrib.auth.admin.UserAdmin object at 0x000000000B5F9080>,
<class 'app01.models.Book'>: <app01.admin.BookConfig object at 0x000000000B601D68> } {
<class 'django.contrib.auth.models.Group'>: <django.contrib.auth.admin.GroupAdmin object at 0x000000000B5CA5F8>,
<class 'django.contrib.auth.models.User'>: <django.contrib.auth.admin.UserAdmin object at 0x000000000B5F9080>, <class 'app01.models.Book'>: <app01.admin.BookConfig object at 0x000000000B601D68>,
<class 'app01.models.Publish'>: <django.contrib.admin.options.ModelAdmin object at 0x000000000B601D30>,
<class 'app01.models.Author'>: <django.contrib.admin.options.ModelAdmin object at 0x000000000B601DD8>,
<class 'app01.models.AuthorDetail'>: <django.contrib.admin.options.ModelAdmin object at 0x000000000B601E10>
} HTTP: 什么是url:
协议://IP:8000/路径?a=1&b=2 http://127.0.0.1:8000/index/car/3?a=1 url("^yuan/",([
url(r'^test01/', ([
url(r'^test04/', test04),
url(r'^test05/', test05),
],None,None)), url(r'^test02/', test02),
url(r'^test03/', test03),
],None,None)) 需求:
为每一个app下的model设计增删改查4个url 127.0.:/Xadmin/app01/book/
127.0.:/Xadmin/app01/book/add
127.0.:/Xadmin/app01/book//change/
127.0.:/Xadmin/app01/book//delete/
原生form

forms组件

    ChoiceField(Field)

    ModelChoiceField(ChoiceField)

    ModelMultipleChoiceField(ModelChoiceField)

     针对form表单设计form组件

modelform

     class Book(models.Model):

        title=models.CharField(max_length=)
price=models.DecimalField(max_digits=,decimal_places=) # 999999.99
date=models.DateField()
publish=models.ForeignKey("Publish")
authors=models.ManyToManyField("Author") class BookForm(forms.Form):
title = forms.CharField(max_length=,label="书籍名称")
price = forms.DecimalField(max_digits=, decimal_places=,label="价格") # 999999.99
date = forms.DateField(label="日期",
widget=widgets.TextInput(attrs={"type":"date"})
) #gender=forms.ChoiceField(choices=((,"男"),(,"女"),(,"其他")))
#publish=forms.ChoiceField(choices=Publish.objects.all().values_list("pk","title"))
publish=forms.ModelChoiceField(queryset=Publish.objects.all())
authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all())

admin 的流程 Xadmin的更多相关文章

  1. 实现django admin后台到xadmin后台的转变

    虽然不做前端,还是喜欢好看的东西~.~ 之前同事估计也是功能实现没空管这个后台,前段时间闲的,稍微改了下外貌,前后对比下: Python3.5+Django1.9.7+Xadmin0.6.1 步骤如下 ...

  2. Django admin组件源码流程

    admin 组件 Django 自带的用户后台组件 用于用户便携的操作 admin 组件核心 启动 注册 设计url 启动核心代码 每个app 通过 apps.py 扫描 admin.py 文件 并执 ...

  3. Django Xadmin - 重构django admin

    一.Django admin的执行流程 https://www.cnblogs.com/weihengblog/p/9122509.html 我的博客,介绍了django admin执行流程 二.Xa ...

  4. Django admin源码剖析

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  5. py3.6 + xadmin的自学网站搭建

    xadmin安装 由于安装时需要依赖包并且暂时不支持py3等原因,直接pip install的方法很容易就狗带了. 说一下我在网上找到的安装方式,在GitHub上有这个项目的开源代码,并且还有很多个版 ...

  6. Django+xadmin打造在线教育平台(二)

    三.xadmin后台管理 3.1.xadmin的安装 django2.0的安装(源码安装方式): https://github.com/sshwsfc/xadmin/tree/django2 把zip ...

  7. 【django之admin,单例模式】

    一.admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...

  8. Django之admin的使用和源码剖析

    admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLE ...

  9. Django 之 admin管理工具

    -------------------------------------------------------------------------妄尝恶果,苦果自来. admin组件使用 Django ...

随机推荐

  1. Jsp基本语法 第二章

    今天是星期天,我学习了关于Jsp的一些基本页面元素 首先学习了一些基本页面注释 1.HTML的注释 <!-- htmI注释-->//    客户端可见 2.JSP的注释:  <%-- ...

  2. RabbitMQ、Memcached、SQLAlchemy

    一.RabbitMQ 1.基础概念 rabbitMQ说白了就是一个消息队列,类似于Queue,也是生产者与消费者模型.只不过做了扩展,所不同的是Queue在内存中的消息队列,而RabbitMQ是部署在 ...

  3. BlurZoomGallery一个完美下拉进入大图模式

    BlurZoomGallery一个完美的Gallery和view的事件处理,下拉放大的时候gallery不断的在添加高度,gallery效果在放大,实现下拉进入大图模式,view滑动事件和galler ...

  4. EF 控制code-first生成的数据库表名的单复数

    原地址:https://blog.csdn.net/winnyrain/article/details/51248410 在Code-First中,默认生成的数据库表的名称为类型的复数形式,如Mode ...

  5. js高级-递归调用

    函数调用自身 求1-100的和 var sum = 0; for(var i = 1; i<=100; i++){ sum += i } console.log(sum) //自己写的递归 va ...

  6. scrapy爬虫的编写步骤

    scrapy的步骤: a.编写item,爬取的各个属性 b.编写spider,name 要和 scrapy crawl xxspider一致,里面编写parse的信息,就是xpath获取item的各个 ...

  7. Java NIO Overview

    Java NIO Overview Channels and Buffers Selectors   Jakob JenkovLast update: 2014-06-23

  8. java 基础-思维导图

    思维导图的好处 最近看了一些文章的思维导图,发现思维导图真是个强大的工具.了解了思维导图的作用之后,觉得把它运用到java上应该是个不错的想法,这样回顾知识点的时候一目了然,快速知道自己的短板. 思维 ...

  9. Java:类加载机制及反射

    一.Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允 ...

  10. Netty 能做什么

    作为一个学Java的,如果没有研究过Netty,那么你对Java语言的使用和理解仅仅停留在表面水平,会点SSH,写几个MVC,访问数据库和缓存,这些只是初等Java程序员干的事.如果你要进阶,想了解J ...