我正在开发一个Web2Py中的应用程序,它包含一些电子商务。有一个控制器和页面链接是localhost:8000 / topranchos / produto,与产品,topranchos是应用程序。
在页面produto中有一个这样的产品列表:
点击“Adicionar ao carrinho”按钮后,执行javascript功能:
<script>
function adicionarCarrinho(prod, qtde) {
quantidade = document.querySelector(qtde).value
console.log(quantidade)
if(quantidade > 0) {
$.get("{{=URL(f="adicionarCarrinho")}}", {produto: prod, qtde: quantidade} )
.done(function( data ) {
console.log (data)
var atual =document.querySelector(".badge-carrinho").innerHTML;
document.querySelector(".badge-carrinho").innerHTML =
parseInt(quantidade) + parseInt(atual);
alert("Adicionado ao carrinho com sucesso");
});
}
else alert("Selecione a quantidade de itens deste produto que você deseja");
}
</script>
这是对行动默认/ adicionarCarrinho的请求:
def adicionarCarrinho():
if request.vars:
session.carrinho.append(
#{'produto':db(db.produto.id == request.vars['produto']).select(),
{'produto':int(request.vars['produto']),
'quantidade':int(request.vars['qtde'])}
)
print "----------"
print session.carrinho
return str("OK")
其中session.carrinho有一个在db.py模型上声明的列表:
#carrinho
session.carrinho = []
在终端上,命令print session.carrinho打印ajax请求收到的项目,但是当我添加其他itens时,列表为空。当我点击carrinho的页面,显示session.carrinho的信息时,var是空的。
我该如何修理?我尝试使用当然是Web2Py书的cookie,但是我对Web2Py很不满意而且还没有成功:/
谢谢你!答案 0 :(得分:0)
模型文件在每个请求上执行,因此您将在每个请求时将session.carrinho
重置为空列表。相反,在模型中,这个:
session.carrinho = []
应该是这样的:
session.carrinho = [] if session.carrinho is None else session.carrinho