1. 课程介绍
        - 数据类型
        - 函数
        - 面向对象三大特性:继承,封装,多态
        - socket:本质传输字节;所有网络通信都基于socket
        - 数据库设计:单表、FK、M2M (自己作业:自己领域设计表,相亲网站)
        - 会用:html/css/js/bootstrap
2. Http知识
    
    基于Socket  --所有网络通信都基于socket

浏览器(格式一):
        Web服务器(格式一):
       
        MySQL客户端(格式二):
        MySQL服务端(格式二):
        
        无论是哪种传输格式,本质都是发送的字符串:
            socket = socket.socket()
            socket.connect((ip,端口))
            socket.sendall(b'87ljas9802jlksjdf098jlksdf09')

  在python2,和python3中字符串的区别:

 -在python2中字符串是以bytes类型存在的,可以直接传输,在字符串前面加 u  才表示 unicode 类型 -在python3中字符串是以unicode类型存在,所有在传输时必须转化成bytes类型

浏览器发送GET请求数据格式:

        请求首行;        // 请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1请求头信息;      // 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost空行;           // 用来与请求体分隔开请求体。         // GET没有请求体,只有POST有请求体。

socket = socket.socket()
        socket.connect((ip,端口))
        socket.sendall(b'GET /index/?name=xxx&age=11 http1.1\r\nAccept:text/html\r\nAccept-Encoding:gzip, deflate\r\nCookie:UM_distinctid=15d274\r\n\r\n')

        获取数据:request.GET.get('name')        

、    浏览器发送POST请求数据格式:

        请求首行;        // 请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1请求头信息;      // 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost空行;           // 用来与请求体分隔开请求体。         // 请求体。

socket = socket.socket()
        socket.connect((ip,端口))
        socket.sendall(b'POST /index/?name=xxx&age=11 http1.1\r\nAccept:text/html\r\nAccept-Encoding:gzip, deflate\r\nCookie:UM_distinctid=15d274\r\n\r\na1=123&a2=666&a3=xx')
        
        在这里注意:
            1-  POST请求中在url路径后仍然可以携带数据,同样是用request.GET.get('name')获取
            2-  POST请求数据是以 a1=123&a2=666&a3=xx  这种形式存在的
            
        Django加工POST请求的数据,
        判断用户是否传递的是Django可以向request.POST中解析的数据?读取请求头Content-Type: application/x-www-form-urlencoded,如果判断能够解析,那么就去解析request.body中的值,放置到request.POST中
                                  a1=123&a2=666&a3=xx
                                  request.POST.get('name')
                                  request.body   b"a1=123&a2=666&a3=xx"
        扩展:
        Http Header里的Content-Type一般有这三种:

            application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式。multipart/form-data: 数据被编码为一条消息,页上的每个控件对应消息中的一个部分。text/plain: 数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。postman软件里标的是RAW。

form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。

当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串追加到url后面,用?分割,加载这个新的url。

当action为post时候,浏览器把form数据封装到http body中,然后发送到server。 如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到multipart/form-data了。

当action为post且Content-Type类型是multipart/form-data,浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。
                    
        
                              
        Django加工POST请求的数据:如果判断不能够解析,那么就直接放在request.body ,故取数据就需要到request.body中
                                  {a1:123,a2:567}    
                                  request.POST   空
                                  request.body   b"{a1:123,a2:567}"

Http协议

 - 请求头和请求体分割:\r\n\r\n- 请求体之间:\r\n- GET无请求体- 无状态,短连接(无连接):socket请求响应断开但是在 HTTP/1.1进行调整,客户端收到数据后会过一段时间再断开连接(避免在短时间内重复连接服务端,对服务端造成压力)- 请求头代表的意义- user-agent:来源- referer: 防盗链- content-type:请求体是什么格式?

3. Django请求生命周期
    
    wsgiref模块:
        函数版本:

from wsgiref.simple_server import make_serverdef run_server(environ, start_response):start_response('200 OK', [('Content-Type', 'text/html')])return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]if __name__ == '__main__':httpd = make_server('127.0.0.1', 8000, run_server) # 请求一旦到来:run_server(..)httpd.serve_forever()

类版本:

            from wsgiref.simple_server import make_serverclass WsgiHandler(object):def __call__(self,environ, start_response):start_response('200 OK', [('Content-Type', 'text/html')])return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]if __name__ == '__main__':obj =WsgiHandler()httpd = make_server('127.0.0.1', 8000, obj) # 请求一旦到来:obj(..)
                httpd.serve_forever()# 类()   -> 执行__init__方法# 类()() -> 执行__call__方法

生命周期:


          
    注意:
        渲染工作在Django中执行完成后,字符串返回给浏览器。
        但是:js,css额外再发一次请求仅获取静态文件,但是这次即使有模板语法也不会替换了
       
        
4. Django所有知识点:
    知识点:
        1. 路由规则

            - /index/ func- /\d+/   func()- /?P<name(\d+)>/   func()- include- 反向生成URL:- {%url ""%}- reverse('a1',args=(1,))  

2. 视图函数:

请求相关:request:methodGET.get/.getlistPOSTCOOKIESsessionuserbodyrequest.FILES

响应相关:renderHttpResponseredirect 

3. 模板语言

        if   for索引: .执行:不加括号自动执行函数自定义标签、过滤器 :  filter和simple_tag

4. ORM操作
            创建表:

          类字段:INT,CHA,FK,M2M

操作表:(CURD)

          13操作-补充:filtervaluesvlaues_listall/values/values_list三者区别                        only方法:                    models.UserInfo.objects.all()    - [obj(id,name,pwd,email),obj(id,name,pwd,email),]

                   data_list = models.UserInfo.objects.all().only('name','email')   - [obj(id,name,email),obj(id,name,email),]   # pwd字段未取值                   for item in data_list:                        item.id    - 直接得到值                        item.name  -直接得到值                 item.pwd    - 同样可以得到值,但是效率低,因为是重新向数据库发送请求
             defer方法:                    data_list = models.UserInfo.objects.all().defer('name','email')    -  [obj(id,pwd),obj(id,pwd),obj(id,pwd),]   #不取某些字段的值                         for item in data_list:                         item.id                        item.pwd  双下划线查询正向和反向

5.同学们整理知识点:

        - 路由对应关系:- 模板继承- 模板标记标签:for,if,- 返回:- HttpResponse- render- redirect- 启动- Model类的创建,继承Model- migrate- 模板自定义函数:filter,sample_tag- cookie和Session- 基本配置文件:- 模板- 静态文件- MySQL和proejct同名的目录的__init__- Model中自定义方法:__str__- Model操作:创建:createsavebulk_create13中操作:filter(nage='xx")filter(**{age:18})values('id')values(*['id','name'])values_listlastfirstalldistictexcludegetupdate(age=11)update(**{age:11})delete()- 多对多查询(查询)- URL别名,目的:反向生成URL/detail/(\d+)/  name = a1from django.url import reverseurl = reverse('a1',args=[6,])- 分页- 分组和聚合 

转载于:https://www.cnblogs.com/liuwei0824/p/7778779.html

python-day74--知识总体总结相关推荐

  1. python制作关键图谱_知识图谱neo4j—利用python进行知识入库

    知识图谱neo4j-利用python进行知识入库 知识图谱-利用python进行知识入库 作为一个写sql出生的菜鸡,在这里分享一下去年11月到12月之间研究的关于知识图谱的课题相关知识,由于客户的原 ...

  2. Python基础知识梳理(一)

    Python基础知识梳理: 转载于:https://blog.51cto.com/10412806/2095116

  3. python classmethod知识_python基础知识讲解——@classmethod和@staticmethod的作用

    python基础知识讲解--@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...

  4. python基础知识-11-函数装饰器

    python其他知识目录 1.装饰器学习前热身准备 1.1装饰器简介 1.2装饰器热身分析 1) def func():pass v1 = 10 v2 = func #将函数名赋予一个变量,就和变量赋 ...

  5. python基础知识资料-Python基础知识汇总

    原标题:Python基础知识汇总 1.Anaconda的安装 百度Anaconda的官网,下载左边的Python3.X版本 然后是设置路径,最后给出Jupyter notebook.具体参考: 猴子: ...

  6. python基础知识资料-Python基础知识梳理 - 第02部分

    本文是Python基础知识的第二篇, 主要是对内置对象类型的介绍, 涉及的类型如下表. 数字类型 在Python中, 数字并不是一个真正的对象类型, 而是一组类似类型的分类, 如整数和浮点数, 复数等 ...

  7. python语法基础知识总结-Python基础知识梳理 - 第01部分

    在开始Python基础知识梳理前, 先安装下环境. 以下过程是在Linux操作系统, root用户下进行的, 主要安装了2.7版本的python, 和pip, ipython, virtualenv等 ...

  8. python笔记基础-Python基础知识

    Python基础知识 安装Python mac 通过命令行brew install python3 或者下载对应版本安装包安装 linux 通过包管理器安装apt-get install python ...

  9. python基础知识资料-python基础知识整理(值得收藏)

    近些年python语言非常流行,许多开发者都会学习一些python相关知识,本文为大家整理了python的一些基础知识,希望对大家有一定的帮助. 注:下文Python代指Python3. 基本信息和J ...

  10. python基本语法规则-python基础知识——基本语法

    在python基础知识这个系列中,准备罗列出我学习python的一些基础知识,包括:基本语法 控制语句 内置数据结构 模块和函数 字符串 文件处理 面向对象 异常处理 以前写机器学习算法喜欢使用Mat ...

最新文章

  1. oracle 根据spid查sql,探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句...
  2. dynamic change date type to sap.ca.ui.model.type.Date in Debugger
  3. POJ 3608 Bridge Across Islands 《挑战程序设计竞赛》
  4. C语言那年踩过的坑--局部变量,静态变量,全局变量在内存中存放的位置
  5. Kubernetes原理浅析
  6. Google Colab使用学习笔记
  7. [转]20个优秀网站助你征服CSS
  8. Android 设计模式:(一)策略模式 —— 封装行为的大局观
  9. 服务器网站出现service,网站出现service unavailable的解决方法
  10. 27条好赚钱副业的途径:自己也能不用上班月入2万+!
  11. nodejs gm 中文 linux,nodejs gm drawText使用(中文、字体、大小及颜色)
  12. java堆排序递归代码,无原理版,比较好理解
  13. Antd表单项根据后端返回字段显示错误的校验提示语
  14. PWM脉冲matlab正弦波调制,(最新整理)单相正弦波PWM逆变电路
  15. 计算机网络的发展历史
  16. java 30分钟_java 实现当前时间加减30分钟的时间代码
  17. C语言规范:C89、C90、C95、C99及C89和C99区别
  18. 利用adb指令为IPTV盒子安装应用
  19. 机房收费系统---软件需求说明书
  20. 基于Element,快速开发Vue项目

热门文章

  1. python跟java适用专业_javaweb中java和python混合使用
  2. Problem L. Graph Theory Homework
  3. Daydream -区间技巧
  4. 展开收起js动画效果
  5. CTF之Web训练后篇2
  6. token详解及常见防范措施
  7. C#基础1:输入输出+变量定义
  8. Educational Codeforces Round 53: E. Segment Sum(数位DP)
  9. Codeforces Round #468 (Div. 2): C. Laboratory Work(贪心)
  10. python利用pygame框架实现类似推箱子游戏 Star Pusher