【发布时间】:2016-11-18 21:45:35
【问题描述】:
我正在尝试将 Javascript 数组传递给我的 Django 视图。这可行,但我想操作该数据并将其显示在单独的 url 中。所以我有一个产品页面,您可以在其中选择项目。提交表单时,会调用此 javascript,我希望它重定向到购物车页面:
$("#getArr").submit(function(){
var data = {'ab[]' : chosen};
$.post('cart/', data, function(response){
if(response == 'success'){
window.location.href="cart/" // references my views
}
else{
alert('Error! :(');
}
});
});
views.py
def cart(request):
if request.method == 'POST':
chosen = request.POST.getlist('ab[]')
print(chosen, file=sys.stderr)
template = loader.get_template('o/cart.html')
context = {'prodChosen': chosen,
'e': "hy"}
return HttpResponse('success')
# return HttpResponse(template.render(context, request))
else:
template = loader.get_template('o/cart.html')
context = {}
return HttpRepsonse('fail')
# return HttpResponse(template.render(context, request))
就像注释掉的 HttpResponse 行一样,我需要将数据传递给我的 cart.html(它将是来自我的模型之一的对象)。我不知道如何将数据传递到我的购物车页面。
print(chosen, file=sys.stderr) 这一行非常有用。
以前,当我有使用注释掉的返回 HttpResponse 行的代码时,它会在我的终端上打印所需的数组和一个空数组。但是,使用此新代码,所需的数组会打印出来,但不会重定向到新页面。我不确定为什么会发生这种情况,但我确实知道在我之前的尝试中打印出的空数组也意味着我的购物车页面没有接收到正确的数组数据。
编辑:我需要将模型对象传递给新的 html 页面,这(据我所知)我无法通过 javascript 完成
index.html
<form id="getArr" method="POST">
{% csrf_token %}
<button type='submit' id="checkCart">Check Added Items</button>
</form>
【问题讨论】:
-
你可以使用渲染。先从 django.shortcuts 导入重定向,然后渲染即可
return render(request, 'cart.html.html', context)。 -
我尝试使用
window.location.href,但我需要从 django 重定向页面,因为我想将模型对象传递给页面。另外,使用render给了我同样的结果。 -
为什么是
window.location.href?如果您像这样重定向,您将丢失数据。您也可以将#getArr制作成一个表格,然后将post制作成cart/。
标签: javascript jquery django post