1、Django请求的生命周期
请求响应Http
1、发送Http请求
请求头(包含Cookie)
\r\n\r\n
请求体
2、服务器请求,根据请求头中的url在路由关系表中进行匹配(从上到下)
3、匹配成功后,执行指定的views函数
a. Url -> 函数 ==> FBV
b. Url -> 类 ==> CBV
4、 响应内容
响应头
\r\n\r\n
响应体
def index(request):
ret = HttpResponse('abcdefghijk...')
ret['key1'] = 'value1'
ret['key2'] = 'value2'
ret.set_cookie('c1','v1')
ret.set_cookie('c2','v2')
# """
# 头:
# key1=value1
# key2=value2
# cookies={'c1':'v1','c2':'v2'}
# 体:
# abcdefghijk...
# """
return ret
2、FBV
3、CBV
自定义一个继承django.views.generic的View的类,重写get和post方法:
from django.views.generic import View
class CBV(View):
def get(self,request):
return HttpResponse('CBV.GET')
def post(self,request):
return HttpResponse('CBV.POST')
urls路由配置中,用上述创建的类的as_view()方法响应某个url
urlpatterns = [
...
url(r'^cbv$', views.CBV.as_view()),
...
]
#在过往的django版本中,引入View,是from django.views import View。
#在自己的django 1.9.5中,引入View,是form django.views.generic import View。
4、业务处理
a. 根据个人需求自定
b. 操作数据库
○ ①原生SQL
○ ②Django ORM