IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Django请求与响应

    haoflynet发表于 2015-05-15 07:12:11
    love 0

    官方文档: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['变量名']   # 获取请求参数

    JsonResponse

    如果要返回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

    HttpResponse

    直接响应字符串或者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请求

    StreamingHttpResponse

    媒体数据等

    FileResponse

    文件数据等

    TroubleShooting

    1.设置GET请求的默认值:

    date = request.GET.get('value', '2')

    2.返回状态码:

    return JsonResponse(error, status = 422)



沪ICP备19023445号-2号
友情链接