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_server

            def 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_server

            class 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:
method
GET.get/.getlist
POST
COOKIES
session
user
body
request.FILES
响应相关:
render
HttpResponse
redirect

3. 模板语言

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

4. ORM操作
            创建表:

          类
字段:INT,CHA,FK,M2M

操作表:(CURD)

          13操作
- 补充:
filter
values
vlaues_list all/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操作:
创建:
create
save
bulk_create
13中操作:
filter(nage='xx")
filter(**{age:18})
values('id')
values(*['id','name'])
values_list
last
first
all
distict
exclude
get
update(age=11)
update(**{age:11})
delete()
- 多对多查询(查询) - URL别名,目的:反向生成URL
/detail/(\d+)/ name = a1 from django.url import reverse url = reverse('a1',args=[6,]) - 分页
- 分组和聚合

python-day74--知识总体总结的更多相关文章

  1. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  2. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  3. python基础知识(二)

    以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍

  4. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  5. 适用于 PHP 开发人员的 Python 基础知识

    Thomas Myer, 负责人, Triple Dog Dare Media 简介: 您是一名经验丰富的 PHP 开发人员,并且希望学习 Python 吗?本文将从 PHP 开发人员的角度来探索 P ...

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

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

  7. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  8. Python数据分析-知识宝藏

    0.SQL数据库 1. python基础知识 2. 重点工具掌握:数据解析核心技巧 - Numpy| Pandas| Matplotlib 3. 数据特征分析:分布| 对比| 统计| 帕累托| 正态| ...

  9. python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

  10. 线程概念( 线程的特点,进程与线程的关系, 线程和python理论知识,线程的创建)

    参考博客: https://www.cnblogs.com/xiao987334176/p/9041318.html 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运 ...

随机推荐

  1. 论文阅读:Videos as Space-Time Region Graphs

    Videos as Space-Time Region Graphs ECCV 2018 Xiaolong Wang 2018-08-03 11:16:01 Paper:arXiv 本文利用视频中时空 ...

  2. 并发学习一、MPI初步认识

    学习参考地址:https://www.jianshu.com/p/2fd31665e816 编程使用的vs2015 社区版本(个人感觉比Vc6.0的丑界面看起来舒服多了) MPI基本函数 MPI调用借 ...

  3. 常用Iview样式布局

    type 布局模式,可选值为flex流式布局或不选,在现代浏览器下有效 flex 布局下的垂直对齐方式,align可选值为top.middle.bottom flex 布局下的水平排列方式,justi ...

  4. 【译】第16节---数据注解-Table

    原文:http://www.entityframeworktutorial.net/code-first/table-dataannotations-attribute-in-code-first.a ...

  5. 利用JavaScriptSOAPClient直接调用webService --完整的前后台配置与调用示例

    JavaScriptSoapClient下载地址:https://archive.codeplex.com/?p=javascriptsoapclient JavaScriptSoapClient的D ...

  6. eclipse中建geoserver源码

    概述:本文讲述的是在eclipse中如何构建geoserver源码工程,其中涉及到了jdk,github,marven等. 1.安装git 从(http://git-scm.com/download/ ...

  7. Qt基础学习(3)-----滑动条之QSlider

    //mydialog.h #ifndef MYDIALOG_H #define MYDIALOG_H #include <QDialog> class QLineEdit; class Q ...

  8. 理解 Redis(1) - Redis 简介

    Redis 的含义 全称: REmote DIctionary Server 远程词典服务器 由于支持 string, list, set, ordered set, hash 等多重数据结构, 因此 ...

  9. Codeforces 769D k-Интересные пары чисел

    题目链接:http://codeforces.com/contest/769/problem/D 搜索题 考虑这些数的值域较小,直接${O(2^{k})}$次方枚举每个数字二进制位上是否改变,剪枝一下 ...

  10. 【NPOI】WebAPI-使用NPOI导出Excel

    1.安装nuget包 2.封装方法 public byte[] ExportToByteArray(IEnumerable<string> headerText, IEnumerable& ...