Django的视图函数中一些没有用过的小点

Posted bainianminguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django的视图函数中一些没有用过的小点相关的知识,希望对你有一定的参考价值。

1、request对象

    print("返回用户访问的url,但是不包括域名",request.path_info)
    print("返回请求的方法,全大写",request.method)
    print("返回HTTPde GET参数的类的字典对象",request.GET)
    print("返回HTTPde POST参数的类的字典对象", request.POST)
    print("请求体",request.body)

  

结果如下:

技术分享图片

 

 

2、form上传文件 

首先看下form表单该如何写

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" action="/app1/upload/" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" placeholder="上传文件" name="file">
    <input type="submit" value="提交">

</form>
</body>
</html>

  

重点是这里

技术分享图片

 

然后看下后端视图函数,用request.FILES方法获取上传的文件的对象

def upload(request):
    method = request.method.lower()
    if method == "get":
        return render(request,"upload.html")
    else:
        # print(dir(request))

        file_name = request.FILES["file"].name

        name = request.FILES.get("file").name
        size = request.FILES.get("file").size
        print("---------->",dir(request.FILES.get("file")))
        print(name,size)
        import os
        new_file_path = os.path.join("static","upload",name)
        with open(new_file_path,"wb") as f:
            for chunks in request.FILES.get("file").chunks():
                f.write(chunks)


        return HttpResponse(file_name)

  

 

3、视图函数返回json字符串的三种方法

def js(request):
    ret = {"name":"xiaocui","age":23}

    # 视图函数返回json字符串,有下面三种方法


    # 方法1
    import json

    return HttpResponse(json.dumps(ret))


    # 方法2

    from django.http import JsonResponse
    return JsonResponse(ret)

    # 默认情况下JsonResponse只能转换字典为js的字符串,如果是列表是转换不成jsson的字符串d的,如果要转换列表为js字符串则使用下面的方法

    
    # 方法3
    from django.http import JsonResponse
    return JsonResponse(ret,safe=False)
    
    # 告诉JsonResponse不要为我做安全监察

  

以上是关于Django的视图函数中一些没有用过的小点的主要内容,如果未能解决你的问题,请参考以下文章

Django的model操作中一些常用的小点

Django中的forms一些小点

超级有用的9个PHP代码片段

Django编写RESTful API:基于类的视图

「mysql优化专题」90%程序员没听过的存储过程和存储函数教学

如何在Django视图中使用for循环返回每次迭代[关闭]