Django在request.body中POST数据但不能存储在变量中

时间:2017-04-03 06:43:21

标签: python django

我将一些原始JSON发布到我的后端

(?<=\\))

然而,当我尝试

{
    "access_token": "hU5C7so4reJOYTzPyhKPs8PWq07tb",
    "id": 3,
    "order_details": [{"meal_id": 1, "quantity": 3}, {"meal_id": 2, "quantity": 2}]
}

我收到print (request.POST.get("access_token"))

但是,当我做的时候

None

值似乎在那里: print (request.body)

我正在使用Postman发布数据。

我想将访问令牌存储到某个变量中,如下所示:


b'{\n\t"access_token": "hU5C7so4reJOYTzPyhKPs8PWq07tb",\n\t"id": 3,\n\t",\n\t"order_details": [{"meal_id": 1, "quantity": 3}, {"meal_id": 2, "quantity": 2}]\n}'

发布数据

我仍然是Django的新手,任何帮助都会很棒。

3 个答案:

答案 0 :(得分:2)

只需执行json.loads即可。

import json

json_data = json.loads(request.body)

答案 1 :(得分:1)

发送表单数据时,将填充

Request.POST。 有关详细信息,请参见django docthis answer。 由于在您的情况下,您正在发布“纯文本” json,因此您将在request.body下找到您的有效负载。 您可以将主体从二进制解码为dict,如下所示:

import json

body = json.loads(request.body.decode('utf-8'))
access_token = body.get("access_token")

答案 2 :(得分:0)

你需要首先解码json:

int priority(char x)
{
    if(x=='+'|| x=='-') {
        return 1;
    } else if(x=='(') {
        return 0;
    } else if(x=='*'||x=='/') {
        return 2;
    } else {
        return 3;
    }
}

int main()
{   
    char exp[50], *e, x;
    scanf("%s", exp);
    e = exp;
    while(*e != '\0') {
        if(isalnum(*e)) {
            printf("%c",*e);
        } else {
            while(priority(stack[top]) >= priority(*e)) {
                printf("%c",pop());
            }
            push(*e);
        }
        e++;
    }
    while(top!=-1) {
        printf("%c",pop());
    }
    return 0;
}

然后你可以回复你的信息

import json
variable = urlopen(request).read().decode('utf-8')
json_obj = json.loads(variable)

希望这个帮助