Django收到POST请求后如何更新页面?

时间:2018-12-28 20:41:04

标签: django django-templates django-views

我是Django的新手。

我想在应用程序每次收到POST请求时更新浏览器中的页面。目前,我通过POSTMAN发送POST请求。最后,这是另一个Web服务器,它将通过POST请求发送数据。

我找不到任何解决方案。

这是我认为的代码:

@csrf_exempt
def prem(request):

    if request.method == 'GET':
        print("GET")
        context = {'contenu': request.GET.get("request_received", "nothing") }
    elif request.method == 'POST':
        print("POST")
        datar = request.GET.get('request_received','rien')
        context = { 'request_received' : datar }

    return render(request, 'polls/seco.html', context)

模板中的代码:

{% if request_received %}
    {% csrf_token %}
    <p>Message received from POST request : {{ request_received }}</p>
{% endif %}

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

根据您所写的内容(在注释中),似乎希望每当收到请求时,该网页即可实时动态更新(无需重新加载)。

这在技术上是不可能的,因为发送响应后django不会保持与客户端的连接。

您必须将传入的发布请求(来自POSTMAN)保存到db。

然后在模板中,您可以使用AJAX连续检查是否有新请求到达,或者使用websocket来保持与用户的连接。

Websocket比AJAX更快。因此,当您在评论中“立即”编写时,它们就是您想要的。在最坏的情况下,AJAX请求可能要花费几秒钟。

在django中,您可以将django-channels用于websockets

django channels