Day22-1-知识回顾
1. 知识点概要
--Session
--CSRF
--Model操作
--Form验证(ModelForm)
--中间件
--缓存
2.知识回顾
2.1客户端请求及服务器端返回,都包含请求头和body两部分内容。
在源码中,通过\r\n\r\n 来分割请求头和请求内容。(2个换行符)
views:用户请求
request.body:所有数据内容的原生值。下面4种方法实质上都是从request.body中提取数据
request.POST
request.GET
request.FILES
request.XXXX.getlist
request.Meta:请求头request headers中的相关内容
request.method(POST,GET,PUT)
request.path_info
request.COOKIES
把数据返回给用户:也包含响应头和响应内容(response Headers,response body)
1.return HttpResponse("字符串/字节bytes")
a='中国'
response=HttpResponse(a,bytes(a)) 字符串或字节都可以,内容是返回到了body里面
2.return render
3.return redirect
a='中国'
response=HttpResponse(a,bytes(a)) 字符串或字节都可以,内容是返回到了body里面
response.set_cookie() cookie是放到响应头里面去返回的。
response['name']='Alex' 自己给响应头增加内容
return response
2.2 Django之Models操作
表内容操作:
models.TB.objects.create()
models.TB.objects.create(**{})
obj=models.TB(..) obj.save()
models.TB.objects.all()
models.TB.objects.all()[7:10]
models.TB.objects.update()
models.TB.objects.filter(id__in=[1,2,3])
models.TB.objects.filter()
models.TB.objects.filter(XXX_id)
models.TB.objects.delete()
models.TB.objects.values()
models.TB.objects.values_list
models.TB.objects.filter().update()
models.TB.objects.filter().first()
models.TB.objects.filter(**{})
models.TB.objects.filter().count()
models.TB.objects.filter(双下划线跨表)
models.TB.objects.filter(id__gt=1)
models.TB.objects.filter(id__range=[1,2])
models.TB.objects.filter(id__lt=1)
models.TB.objects.filter(id__gte=1)
models.TB.objects.filter(id__lte=1)
models.TB.objects.exclude(id__lte=1)
多对多
obj.set
obj.add(1,2,3)
obj.add([1,2,3])
obj.remove([1,2,3])
obj.clear()
models.TB.objects.all() [obj,obj]
obj.fk.name
models.TB.objects.all().order_by('')
models.TB.objects.distinct()
从B跨表到A用fk,从A跨表到B用 b(表名)_set
class A:
name..
#b_set
class B:
caption..
fk=ForignKey(A)
通过M2M会生成第3张表
class A:
name..
#b_set
class B:
caption..
fk=ManyToMany(A)
2.3 模板语言
A-基本操作
def func(request):
return render(request,'index.html',{'val':[1,2,3]})
#index.html <h1>{{val.0}}</h1>
B-继承 extends "layout.html"
C-include 组件
D-simple_tag,filter