DAY 51 django06

-1 前后端混合开发(咱们前后端都写)
前后端分离,前端的人专门写前端,后端的人专门写后端
0 django的模板语法
-dtl:在模板中写python代码 ../14550984.html
   -php:http://www.aa7a.cn/user.php
   -java:https://www.pearvideo.com/category_loading.jsp
   -go:../14550984.html
   -jsp  javascript
1 后续的课程
-django高级,ajax,分页,auth,中间件..
   -BBS项目
   -drf:写接口
   -vue
   -路飞:git,celery,redis,发短信....
   -flask
   -cmdb:自动化运维
   -爬虫
   -go
   -es
   -redis高级
   -rabbitmq,rpc
   -mongodb
   -mysql 主从,读写分离,分库分表
   -分布式锁,分布式id。。。。
   
2 python后端开发,爬虫,自动化运维,自动化测试,python开发(写脚本)
数据分析,go开发
   
3 多对多操作的api
-add
   -remove
   -clear
   -set
   
4 什么情况下手动创建第三张表?
-第三张表中有其它额外的字段

1 分组查询

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day53.settings")
if __name__ == '__main__':
   import django

   django.setup()

   from app01 import models

   # 查询每一个出版社id,以及出书平均价格(单表)
   # 原生sql
   # select publish_id,avg(price) from book group by publish_id;
   # orm实现
   '''标准 annotate() 内写聚合函数
  values在前,表示group by 的字段
  values在后,表示取字段
  filter在前,表示where条件
  filter在后,表示having
  '''
   from django.db.models import Avg,Count,Max

   # res = models.Book.objects.all().
   #     values('publish_id').
   #     annotate(price_ave=Avg('price')).values('publish_id','price_ave')
   # print(res)

   # 查询出版社id大于1的出版社id,以及出书平均价格
   # res=models.Book.objects.values('publish_id').filter(publish_id__gt=1).annotate(price_ave=Avg('price')).values('publish_id','price_ave')
   # print(res)

   # 查询出版社id大于1的出版社id,以及出书平均价格大于30的
   # res=models.Book.objects.values('publish_id').filter(publish_id__gt=1).annotate(price_ave=Avg('price')).filter(price_ave__gt=60).values('publish_id','price_ave')
   # print(res)

   #查询每一个出版社出版的名称和书籍个数(连表)
   # 联表的话最好以group by的表作为基表
   # res=models.Publish.objects.values('nid').annotate(book_count=Count('book__nid')).values('name','book_count')
   # 简写成,如果基表是group by的表,就可以不写values
   # res=models.Publish.objects.annotate(book_count=Count('book')).values('name','book_count')

   # 以book为基表
   # print(res)
#查询每个作者的名字,以及出版过书籍的最高价格(建议使用分组的表作为基表)
   # 多对多如果不以分组表作为基表,可能会出数据问题
   # res=models.Author.objects.annotate(price_max=Max('book__price')).values('name','price_max')

   # res=models.Book.objects.values('authors__nid').annotate(price_max=Max('price')).values('authors__name','price_max')
   # print(res)

   #查询每一个书籍的名称,以及对应的作者个数
   res=models.Book.objects.annotate(count=Count('authors')).values('name','count')
   print(res)

   ##统计不止一个作者的图书

   ## 统计价格数大于10元,作者的图书
   ##统计价格数大于10元,作者个数大于1的图书
   res=models.Book.objects.filter(price__gt=10).annotate(count=Count('authors')).filter(count__gt=1).values('name','price','count')
   print(res)

 

2 图书管理系统项目

1 后端是django+mysql/sqlite
2 前端:jquery,bootstrap
3 首页,图书列表展示,图书新增,修改,作者展示,新增,修改,出版社展示,新增,修改。。。
4 项目地址:https://gitee.com/liuqingzheng/books

补充

1 wsgi,uwsgi,cgi,fastcgi

python:有wsgi协议,uwsgi,gunicorn
java:tomcat,jboss
php:php服务器

wsgi:协议,规定了如何拆http请求,拆到一个python字典中,environment,响应对象,start_response
wsgiref:符合wsgi协议的web服务器
 

详情见:http://www.liuqingzheng.top/article/1/05-CGI,FastCGI,WSGI,uWSGI,uwsgi%E4%B8%80%E6%96%87%E6%90%9E%E6%87%82/
   
# asgi协议

 

 

]

原文地址:https://www.cnblogs.com/DEJAVU888/p/14893593.html