【问题标题】:How can I get the post data from formdata如何从表单数据中获取帖子数据
【发布时间】:2018-03-05 10:43:09
【问题描述】:

我很困惑如何从 ajax formdata 获取数据。直到现在我才使用get request。而且我以前从未使用过formdata。所以,我不知道如何处理数据。

我的客户端脚本如下。

var formData = new FormData();
formData.append('filename', image_file_name);
formData.append('image', image_file);

$.ajax({
    url: HOST_NAME + "user/api/file_uploader/",
    type: 'POST',
    dataType: 'json',
    timeout: 10000,
    data: formData,
    processData: false,
    contentType: false
})
.done(function (data) {
    console.log("success");
})
.fail(function (XMLHttpRequest, textStatus, errorThrown) {
    console.log("failed");
})

我的服务器端代码如下。

def post(self, request, format=None):
    outputLogFile("Upload Function is called...")
    req_file_name = request.POST.form['filename']
    req_image = request.POST.form['image']

我想将文件名放入 req_file_name 并将图像放入 req_image。但我不知道我应该怎么做才能实现这一目标。

请给个建议。

【问题讨论】:

    标签: python ajax django python-3.x django-rest-framework


    【解决方案1】:

    文件是通过request.FILES而不是request.POST访问的,所以你应该使用:

    def post(self, request, *args, **kwargs):
        req_image = request.FILES["image"]
        req_file_name = request.data["filename"]
    

    当我使用它创建图片上传时,我通常将它添加到我的 APIView:

    class ExampleImageUpload(APIView):
        parser_classes = (JSONParser, FormParser, MultiPartParser, )
    

    不要忘记导入它们:

    from rest_framework.parsers import JSONParser, FormParser, MultiPartParser
    

    你也不需要dataType: 'json',,所以我把它删了。

    【讨论】:

    • 感谢您的建议。我相信您的建议将帮助我解决我的问题。但是现在,我得到了错误。 req_file_name = request.POST['filename'] TypeError: 'QueryDict' object is not callable 我不明白是什么代码导致了这个错误。请给我一个建议。
    • @KazzzStudio 你确定你像我的帖子所说的那样使用 [] 括号。该错误表明您使用的是 () 括号
    • 感谢您的回复。我当然使用[]。 'req_file_name = request.POST['filename']' 此消息是从我的 uwsgi.log 复制的。我不明白发生了什么。
    • @KazzzStudio 你可能不得不使用request.data 而不是request.POST,现在我考虑了一下。
    • 感谢您的回复。我能修好它。现在我有另一个错误。 django.utils.datastructures.MultiValueDictKeyError:“'图像'”。也许我的客户端代码错了。无论如何,你的建议对我帮助很大。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2014-09-20
    • 2016-12-29
    相关资源
    最近更新 更多