- http请求本质
浏览器(socket客户端):
二、socket.connect(ip,端口)
三、socket.send("http://www.baidu.com/index.html")
规则:http协议
GET请求:
“GET /index.html?k1=1&k2=2 Http/1.1\r\nhost:www.baidu.com\r\ncontent-type:application/json\r\n\r\n”
POST请求:
“POST /index.html?k1=1&k2=2 Http/1.1\r\nhost:www.baidu.com\r\ncontent-type:application/json\r\n\r\nusername=alex&pwd=123123”html
请求头和请求体使用\r\n\r\n分割,前面头,后面是体前端
请求头:python
请求体:数据库
六、获取响应
响应头,响应体 = data.split('\r\n\r\n')
响应头与响应头之间用\r\n 分割django
七、断开链接json
网站(socket服务端):
一、服务端运行: 监听ip,端口
四、字符串 = server.recv()浏览器
头,体=data.split(“\r\n\r\n=”)cookie
request.POST.get()session
五、服务端响应app
conn.send('......')
响应头:
响应体:
七、断开链接
总结:
a. Http请求中本质都是字符串
b. Http请求短链接 (请求,响应,断开链接)
c. 请求以及响应都有: 头、体
请求头与请求体之间\r\n\r\n 分割 请求头下请求头之间用\r\n分割
- 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() #【用户对象,用户对象】
今日内容:
一、登陆:
- 密码,加密
- 用户登陆以后,才能访问某些页面
二、cookie是什么?
- 保存在客户端浏览器上的键值对 {k:v}
- cookie依附在请求体或响应头中出现
- 发送请求时,会自动携带本身网站的cookie (浏览器经过域名或url进行分割对不一样网站的cookie)
- 应用:
- 实现登陆
- 投票
- 使用cookie:
- 设置cookie:
- 获取cookie
- cookie超时时间 path='/' 访问指定url时,才能读取到cookie 针对哪些url生效 / 根表明所有
- domain=None 当前域名或二级域名,默认是本身的当前域名
三、session
session是什么?
保存在服务端的键值对
ps:依赖cookie
# 一、生成随机字符串
# 二、cookie发送给客户端
# 三、服务端随机字符串做为key,本身设置一些value{}
在django中内部把上边三步都作了,只须要下面一条命令就能够
request.session['yyyyyyy'] = user
session的 key和value存在django.session 数据库表中
四、CSRF,跨站请求伪造
五、牛逼自定义分页