使用Django,如何在我的视图中以静默方式提交表单并且不返回HTTP响应,以免在调用视图函数时不重新加载网页

时间:2018-07-11 03:49:53

标签: html django httpresponse

如何通过单击按钮调用我的视图函数,并使它返回某些内容,导致我的网页无法重新加载?看来我必须在views.py中以某种方式返回HTTP请求,否则会收到错误消息。 “我不想停止提交表格”。我现在不希望使用Ajax。 我有一个页面,其中包含来自数据库的一长串对象,用户可以输入数量并单击将表单数据发送到购物车对象的按钮。为此,将触发相应的视图函数,并返回某种HTTP响应,从而以某种方式导致页面加载。我希望这样,单击按钮时除了提交的表单数据外,什么都不会发生。甚至没有重定向到同一页面。这是因为我不希望用户在页面上丢失该位置,而不必滚动浏览对象列表以查找它们的位置。

  

观看次数

def add_to_cart(request, product_id):
    return HttpResponse('')
  

网址路径

    path('cart/add/<product_id>', home_views.add_to_cart, name='add_to_cart'),
  

报价

<form action="{% url 'add_to_cart' product.id %}" method="post">{% csrf_token %}</form>

3 个答案:

答案 0 :(得分:1)

如果您真的不希望使用AJAX,重新加载页面或进行POST确实反映在页面中的任何更改,则可以添加一个隐藏的<iframe>,将其设置为表单的目标。

<iframe name="submit-frame" style="display: none"></iframe>

...

<form target="submit-frame">...</form>

答案 1 :(得分:0)

这种效果不是由Django Backed产生的,您可以通过ajax请求发布表单数据以得到此结果

答案 2 :(得分:0)

您可以尝试像在按钮单击上调用post()这样的事情:

function post() {
    $.ajax({
        type : 'POST',
        url : 'post/',  //whatever relative url you want to use
        data : { msgbox : $('#input-id').val() }, //the input id of what you are submitting

        success : function(json){ //do stuff if post is successful
            $('#chat-msg').val(''); //can set the to blank
        }
     });
}

只需将其添加到您的javascript或脚本标签中,但是您将需要添加JQuery,如下所述:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>