十八、Django之Http

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

posted @   Bruce_JRZ  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示