zoukankan      html  css  js  c++  java
  • python-django(day19)

    - http请求本质
    浏览器(socket客户端):
    2、socket.connect(ip,端口)
    3、socket.send("http://www.baidu.com/index.html")
    规则:http协议
    GET请求:
    “GET /index.html?k1=1&k2=2 Http/1.1 host:www.baidu.com content-type:application/json ”

    POST请求:
    “POST /index.html?k1=1&k2=2 Http/1.1 host:www.baidu.com content-type:application/json username=alex&pwd=123123”

    请求头和请求体使用 分割,前面头,后面是体


    请求头:

    请求体:

    6、获取响应
    响应头,响应体 = data.split(' ')
    响应头与响应头之间用 分割

    7、断开连接

    网站(socket服务端):
    1、服务端运行: 监听ip,端口
    4、字符串 = server.recv()

    头,体=data.split(“ =”)

    request.POST.get()

    5、服务端响应

    conn.send('......')

    响应头:

    响应体:

    7、断开连接


    总结:
    a. Http请求中本质都是字符串
    b. Http请求短连接 (请求,响应,断开连接)
    c. 请求以及响应都有: 头、体
    请求头与请求体之间 分割 请求头下请求头之间用 分割


    - Web框架

    Django本质:
    socket(django用的是别人的模块“wsgiref”)
    解析和封装http请求(*)


    使用Django:
    a.安装
    b.创建项目
    project
    django-admin startproject mysite

    app
    cd mysite
    python manage.py startapp app01

    写代码(******)

    python manage.py runserver ip:port 启动

    视图函数

    def index(request):

    request.GET
    request.body #原生的请求体
    request.POST #如果请求头中: content-type:urlencode-form...... 才将request.body原生内容转换成字典
    -可能有值
    -可能没值(是因为没做转换,可以去看下body有没有值)
    request.method
    request.Meta

    request.GET.get()
    request.GET.getlist() #前端用chkeckbox多选 ,select单选 ,想获取多个值 用getlist
    request.POST

    return HttpResponse(‘字符串/字节’)
    return render(request,'html路径',{})
    return redirect('URL') #返回的是URL,而不是URL对应的html数据

    - 模板

    - 继承
    - 模板语言
    for
    if

    - filter,sample_tag


    - Model 操作
    -创建表:业务线

    - model.xx.objects.create(name='欧美')
    - models.xx.objects.create(**dic)

    -models.xx.objects.filter(id__gt=1).delete()
    -models.xx.objects.filter(id=1).delete()
    -models.xx.objects.exclude(id=1).delete()

    -models.xx.objects.filter(id=1).update(name='ddd')
    -models.xx.objects.filter(id=1).update(**dic)


    创建表:
    业务线
    主机表
    id host port baidu

    # queryset = [对象,对象,。。。]
    objs = models.xx.objects.all()
    for row in objs:
    row.id
    row.host
    row.port
    row.bs.name

    # queryset = [{},{}。。。。。]
    - objs = models.xx.objects.all().values('id','host','port')

    obj = models.xx.objects.filter(user='alex') 得到的是queryset
    obj = models.xx.objects.filter(user='alex').fisrt()得到的是对象,只要是对象就可以.调用属性(字段)

    obj.mm.add(1)
    obj.mm.add(11)


    queryset = obj.mm.all() alex负责的所有业务线 [业务线对象 ,业务线对象]

    二手车业务线由哪些人负责
    obj = models.business_unit.objects.filter(name="二手车").first
    query = obj.userinfo_set.all() #【用户对象,用户对象】


    今日内容:
    1、登录:
    - 密码,加密
    - 用户登录之后,才能访问某些页面

    2、cookie是什么?
    - 保存在客户端浏览器上的键值对 {k:v}
    - cookie依附在请求体或响应头中出现
    - 发送请求时,会自动携带自己网站的cookie (浏览器通过域名或url进行分割对不同网站的cookie)

    - 应用:
    - 实现登录
    - 投票

    - 使用cookie:
    - 设置cookie:

    - 获取cookie

    - cookie超时时间 path='/' 访问指定url时,才能读取到cookie 针对哪些url生效 / 根代表全部
    - domain=None 当前域名或二级域名,默认是自己的当前域名


    3、session
    session是什么?
    保存在服务端的键值对

    ps:依赖cookie

    # 1、生成随机字符串
    # 2、cookie发送给客户端
    # 3、服务端随机字符串作为key,自己设置一些value{}

    在django中内部把上边三步都做了,只需要下面一条命令就可以
    request.session['yyyyyyy'] = user

    session的 key和value存在django.session 数据库表中


    4、CSRF,跨站请求伪造

    5、牛逼自定义分页

  • 相关阅读:
    HDU 1261 字串数(排列组合)
    Codeforces 488C Fight the Monster
    HDU 1237 简单计算器
    POJ 2240 Arbitrage
    POJ 3660 Cow Contest
    POJ 1052 MPI Maelstrom
    POJ 3259 Wormholes
    POJ 3268 Silver Cow Party
    Codesforces 485D Maximum Value
    POJ 2253 Frogger(最短路)
  • 原文地址:https://www.cnblogs.com/zhangmeixia/p/7505028.html
Copyright © 2011-2022 走看看