官方文档:Request and response objects
当请求一个页面的时候,Django会建立一个HttpRequest对象,它包含了请求的一些数据,该对象就是每个views函数里面的第一个参数request.
需要注意的是,Django的HTTP动词(get/post等)在url上没有区分,只需要在view里面进行判断即可。
例子:
if request.method == 'GET': # GET请求 do_something() elif request.method == 'POST': # POST请求 request.POST['变量名'] # 获取请求参数
如果要返回JSON数据(常见于Ajax请求),可以在view里面这样构造json数据
from django.http import JsonResponse reponse = JsonResponse(字典) # JsonResponse(data, encoder=编码方式默认是utf-8 response = JsonResponse([1, 2, 3], safe = False) # 如果要返回一个单纯的列表数据而不是字典类型的数据,就这样 return response
直接响应字符串或者html
response = HttpResponse('响应一个字符串') response.write('给那个字符串再添加东西') #如果响应一个字典类型 response = HttpResponse() response['Age'] = 120 # 常用构建方法 HttpResponse('字符串', content_type="text/plain") # 指定content_type
常用属性:
HttpRequest.method # 请求种类 HttpRequest.GET # 获取所有的GET参数(字典) HttpRequest.POST # 获取POST的参数(字典) HttpRequest.scheme # 表示请求的模式,是http还是https HttpRequest.cookies # 包含了所有的cookie信息 HttpRequest.session # session信息 HttpRequest.files # 包含了上传的文件 HttpRequest.meta # 包含了http请求的各种headers HttpRequest.user # 当前的登录的用户,配合着auth使用
常用方法:
get_host() #不解释了吧 get_full_path() # 获取路径,不包含域名 build_absolute_uri() # 获取完整路径 is_secure() # 如果是https返回true,否则false is_ajax() # 是否是ajax请求
媒体数据等
文件数据等
1.设置GET请求的默认值:
date = request.GET.get('value', '2')
2.返回状态码:
return JsonResponse(error, status = 422)