zoukankan      html  css  js  c++  java
  • 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协议

     

     

    ]

  • 相关阅读:
    C# 一个用到WPF 和 反射的例子.
    Html 效果之 A 标签.
    HttpModule 的权限管理
    C# 入门经典示例.
    CSS 圆角边框
    .NET 平台文件去除行号
    C#调用WinApi关闭电脑屏幕含自动监视有无输入活动检测
    还是XP好啊
    SQL执行效率测试语句
    自用SqlHelper
  • 原文地址:https://www.cnblogs.com/DEJAVU888/p/14893593.html
Copyright © 2011-2022 走看看