使用 Django,如何在我看来静默提交表单而不是 return HTTP 响应,以便在调用视图函数时不重新加载网页
Using Django, how can submit a form silently and not return a HTTP response in my views as to not reload a web page when a view function is called
如何通过单击按钮调用我的视图函数并使其 return 导致我的网页无法重新加载?看来我必须 return 以某种方式在 views.py 中发出 HTTP 请求,否则我会收到错误消息。 "I do not wish to stop the form submission"。我现在不想使用 Ajax。
我有一个页面,其中包含来自我的数据库的一长串对象,用户可以输入数量并单击一个按钮,将表单数据发送到购物车对象。在这样做时,相应的视图函数被触发,returns 某种 HTTP 响应以某种方式导致页面加载。我希望它在单击按钮时绝对不会发生任何事情,除了提交的表单数据。甚至没有重定向到同一页面。这是因为我不希望用户迷失在页面上的位置,而不得不滚动对象列表以找到它们所在的位置。
views
def add_to_cart(request, product_id):
return HttpResponse('')
url path
path('cart/add/<product_id>', home_views.add_to_cart, name='add_to_cart'),
Quote
<form action="{% url 'add_to_cart' product.id %}" method="post">{% csrf_token %}</form>
这个效果不是你的Django Backed做的,你可以post你的表单数据ajax请求做这个结果
您可以尝试在按钮单击时调用 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>
如果您真的不想使用 AJAX、重新加载页面,或者 POST 确实反映在您的页面中的任何更改,您可以添加一个隐藏的 <iframe>
您设置为表单的目标。
<iframe name="submit-frame" style="display: none"></iframe>
...
<form target="submit-frame">...</form>
如何通过单击按钮调用我的视图函数并使其 return 导致我的网页无法重新加载?看来我必须 return 以某种方式在 views.py 中发出 HTTP 请求,否则我会收到错误消息。 "I do not wish to stop the form submission"。我现在不想使用 Ajax。 我有一个页面,其中包含来自我的数据库的一长串对象,用户可以输入数量并单击一个按钮,将表单数据发送到购物车对象。在这样做时,相应的视图函数被触发,returns 某种 HTTP 响应以某种方式导致页面加载。我希望它在单击按钮时绝对不会发生任何事情,除了提交的表单数据。甚至没有重定向到同一页面。这是因为我不希望用户迷失在页面上的位置,而不得不滚动对象列表以找到它们所在的位置。
views
def add_to_cart(request, product_id):
return HttpResponse('')
url path
path('cart/add/<product_id>', home_views.add_to_cart, name='add_to_cart'),
Quote
<form action="{% url 'add_to_cart' product.id %}" method="post">{% csrf_token %}</form>
这个效果不是你的Django Backed做的,你可以post你的表单数据ajax请求做这个结果
您可以尝试在按钮单击时调用 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>
如果您真的不想使用 AJAX、重新加载页面,或者 POST 确实反映在您的页面中的任何更改,您可以添加一个隐藏的 <iframe>
您设置为表单的目标。
<iframe name="submit-frame" style="display: none"></iframe>
...
<form target="submit-frame">...</form>