提交根评论
显示根评论
--- 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. 【原创】利用Office宏实现powershell payload远控

    本文将演示使用Veil-Evasion生成远控所需要的payload以及监听器,然后使用MacroShop生成payload 相关的VBA代码,最后演示将VBA代码写入.doc文本文档的宏中. 环境: ...

  2. android事件处理概括

    什么是事件处理? 事件处理就是针对用户的一些特定操作,进行相对应的回馈.时间处理也是程序开发中的人机交互的一个非常重要的体现.事件处理中,事件源是事件的起始位. 一.事件处理三要素 事件源——事件—— ...

  3. Jupyter notebook 文件路径

    Jupyter notebook 文件路径 1. 默认工作路径:C:\Users\think 2. 修改工作路径: C:\Users\think\.jupyter路径下,无配置文件 打开命令提示符:( ...

  4. EF 数据查询效率对比

    优化的地方: 原地址:https://www.cnblogs.com/yaopengfei/p/9226328.html ①:如果仅是查询数据,并不对数据进行增.删.改操作,查询数据的时候可以取消状态 ...

  5. CAP与Base理论

    分布一致性的提出 在分布式系统中要解决的一个重要问题就是数据的复制.在我们的日常开发经验中,相信很多开发人员都遇到过这样的问题:假设客户端C1将系统中的一个值K由V1更新为V2,但客户端C2无法立即读 ...

  6. SSH 登录时出现如下错误:Disconnected:No supported authentication methods available

    SSH 登录时出现如下错误:Disconnected:No supported authentication methods available 更新时间:2017-06-07 13:26:11   ...

  7. JVM 图解--1.6,1.7,1.8

  8. web 浏览器窗口

    1.窗口位置: 取得浏览器窗口左边和上边距屏幕左边和上边的位置 var leftPos = (typeof window.screenLeft == "number")? wind ...

  9. 安装Eclipse Maven插件的几种方法

    文章出处:http://blog.csdn.net/lfsfxy9/article/details/9397937 感谢作者的分享! 昨天直接在机器上配置了Maven环境,今天顺便把Eclipse等I ...

  10. JMeter学习(十)参数化User Defined Variables与User Parameters(转载)

    转载自 http://www.cnblogs.com/yangxia-test 偶然发现JMeter中有两个元件(User Defined Variables与User Parameters)很相近, ...