django 如何使用JavaScript检索我的发布请求

5jdjgkvh  于 2022-11-18  发布在  Go
关注(0)|答案(2)|浏览(124)

我有两个项目,第一个是Node.JS

jsonobj = JSON.stringify(generateMockData)
        xhrToSoftware.send(jsonobj);
        xhrToAPI.open("POST", "http://127.0.0.1:8000/path/", true);
        xhrToAPI.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
        xhrToAPI.send(jsonobj);

它将数据发送到第二个项目Django Python。我可以使用views.py接收数据。

post_data = json.loads(request.body.decode("utf-8")) 
value = post_data.get('data')
print(value)

但是我想直接把数据从Node.JS拿到我的Django Templates (javascript or jquery)上,可能吗?
例如:

<script>
 //get the data that posted by the node.js
</script>

最新消息:
我试着用下面的答案来回答这个问题:

fetch('http://127.0.0.1:8000/path/')
    .then(response => response.json())
    .then(data => {
        console.log(data);
    })
    .catch(error => console.error(error));

但我遇到了一个错误它说:

SyntaxError: Unexpected token '<', "<!-- 
 
<d"... is not valid JSON

我想这是因为我在我的www.example.com中返回了一个html文件views.py:

def data(request):
    if request.method == 'POST':
        post_data = json.loads(request.body.decode("utf-8"))  # for simulation
        value = post_data.get('data')
    return render(request, 'waterplant/iot/data.html')

因此,我将其更改为jsonresponse,如下所示:

def data(request):
    if request.method == 'POST':
        post_data = json.loads(request.body.decode("utf-8"))  # for simulation
        value = post_data.get('data')
        return JsonResponse({"msg": value}, status=200)

之后我遇到了一个错误ValueError: The view views.data didn't return an HttpResponse object. It returned None instead.,我想那是因为值还为空。我该如何防止这种情况?如果我使用Node.JS发送数据,我希望返回的是return JsonResponse({"msg": value}, status=200)或者你知道我可以直接在Django Python模板<script> here </script>中访问数据吗

taor4pac

taor4pac1#

*基本js fetch()

如果使用方法“GET”:

fetch('http://127.0.0.1:8000/path')
    .then(response => response.json())
    .then(data => {
        console.log(data);
    })
    .catch(error => console.error(error));

如果使用方法“POST”:

fetch(`http://127.0.0.1:8000/path`, {
            method: "POST",
            headers: {"Content-type": "application/json; charset=UTF-8"},
            body: data
        })
        .then(response => response.json())
        .then(json => {
            console.log(json);
        })
        .catch(error => console.error('Error on fetch() call:\n', error));
    • 希望它能有用 *
ctehm74n

ctehm74n2#

如果要从您的网页发出获取请求,请使用fetch()

fetch('http://127.0.0.1:8000/path')
     .then((response) => response.json())
     .then((data) => console.log(data));

相关问题