- 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、牛逼自定义分页