详情看思维导图

s6day74

7、socket来回的收发消息,本质传输字节,所有的网络通信都基于socket
创建连接为什么不发字符串而发字节呢?
压缩 ,节省流量,
python3中字符串是unicode编码的,字节是将uncode编码成utf-8的字节
python2中的字符串其实就是python3中的字节,在字符串前面加个u就是unicode
send和recv拿到的都是字节

今日内容概要:
  1. 课程介绍
    Django必须会,示例程序【独立完成】

  2. Http知识

  3. Django请求生命周期

  4. Django知识点

  5. 需求写代码

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

    基于Socket

      浏览器(格式一):
      Web服务器(格式一):


      MySQL客户端(格式二):
      MySQL服务端(格式二):

    本质:
      socket = socket.socket()
      socket.connect((ip,端口))
      socket.sendall(b'87ljas9802jlksjdf098jlksdf09')


    浏览器发送GET请求数据格式:
      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请求数据格式:
      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')   

    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"

    Django加工POST请求的数据:{a1:123,a2:567}
      request.POST 空
      request.body b"{a1:123,a2:567}"

Http协议
  - 请求头和请求体分割:\r\n\r\n
  - 请求体之间:\r\n
  - GET无请求体
  - 无状态,短连接:socket请求响应断开
  - 请求头代表的意义
  - 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. 问题:
  a. TemplateDoesNotExist
    - 写错误了
    - 配置出错了
    - 文件夹错了

  b. 静态文件404
    - 写错误
    - 配置
    - 文件夹


5. 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个API操作
-

    补充:
    filter
    values
    vlaues_list

    all/values/values_list    all:列表   values:字典   values_list:元组

__

正向和反向


整理:
- 路由对应关系:

- 模板继承

- 模板标记标签: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,])


- Django自带auth验证

- 模板

- 分页

- 分组和聚合



6. 作业
- 员工
- 设计能力
- 需求:学生,老师(用户名和密码),班主任(用户名和密码),班级关系
- 创建表: Model创建表
- 具体功能:
1. 不登录无能访问,除登录页面【session+装饰器】
2. 老师列表
- 创建老师
- 查看老师详细【老师年龄,姓名,电话,薪资】-任教班级
- 删除
- 修改
3. 班级列表
-
4.
学生列表
- 创建学生






































posted on 2017-11-03 00:36  海燕。  阅读(752)  评论(0)    收藏  举报