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. eclipse创建springBoot项目

    创建Spring Boot 工程 先在eclipse中安装spring -tool -suite插件,然后根据以下步骤可以创建1.新建Spring Starter Project 2.Packagin ...

  2. SAP-批量修改主数据(客户、供应商、物料)

    SAP-批量修改主数据(客户.供应商.物料) TCODE: MASS 对于批量修改主数据如客户,供应商等,可以试用一下Mass , 它所能修改的范围如下: 选定要修改的对象后,点击运行,会要求选择需要 ...

  3. 一.移动app测试与质量保证

    1.典型的互联网产品的研发流程,及其核心做法.这里并不是简单的套用敏捷等流程方法,而是经过时间摸索和不断调整,找到最适合自己产品的流程做法,这是质量实践质量保证的基础. 2.系统功能测试实践.包涵需求 ...

  4. CSS sprites

    CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式. 优点: 它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一 ...

  5. Winform 设置控件值

    private void SetControlValue(Control control, object value) { try { control.FindForm().Invoke((Actio ...

  6. CentOS6.5下搭建Samba服务实现与Windows系统之间共享文件资源

    FTP文件传输服务确实可以让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件,而非共享文件,因此要想通过客户端直接在服务器上修改文件内容还是一件比较麻烦的事情. 1987年,微软公司和英 ...

  7. JsonAutoDetect注解找不到错误

    RedisConfig类代码: package com.neo.SpringBoot.config; import java.lang.reflect.Method; import org.sprin ...

  8. maven 引入外部jar包的几种方式

    方式1:dependency 本地jar包 <dependency> <groupId>com.hope.cloud</groupId> <!--自定义--& ...

  9. [osg][原]自定义osgGA漫游器

    相机矩阵变化基础:http://blog.csdn.net/popy007/article/details/5120158 osg漫游器原理:http://blog.csdn.net/csxiaosh ...

  10. 滑动验证 和滑动图片验证JS

    滑动验证 先放效果图 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...