刷新页面后,Django会话变量值丢失

时间:2014-09-30 18:34:08

标签: python django session

在我的观点中,我试图用Django会话保存一些信息,所以在我的views.py中我有这个:

def shop_product(request, slug):
    tshirt = Tshirt.objects.get(slug=slug)

    request.session['items'] = []  
    product = {}

    if(request.GET.get('add')):
        product['name'] = tshirt.title
        product['price'] = tshirt.price_reg
        request.session['items'].append(product)
        request.session.modified = True


    if(request.GET.get('clear')):
        request.session['items'][:] = []
        request.session.modified = True


    context = {'items' : request.session['items']}


    return render(request, 'shop/shop_product.html', context)

我希望'items'数组包含并添加'product'作为dict,并且当我刷新页面时也可以在网站的任何地方使用(如其他视图egshopping_cart)

问题在于,当我对页面进行刷新时,我在同一页面/视图上(如上所述),我在检索“项目”时遇到问题。另外,如果我转到另一页然后回到原始页面,“项目”中的值就会消失。此值也不适用于任何其他页面/视图。

我的模板/ html看起来像这样:

<form action="#" method="get">
    <input type="submit" class="add" name="add">
    <input type="submit" value="CLEAR" class="clr" name="clear">
</form> 

1 个答案:

答案 0 :(得分:0)

更改您的代码:

def shop_product(request, slug):
    tshirt = Tshirt.objects.get(slug=slug)
    product = {}

    if(request.GET.get('add') and request.GET.get('add')=='add'):
        product['name'] = tshirt.title
        product['price'] = tshirt.price_reg
        request.session['items'].append(product)
        request.session.modified = True


    if(request.GET.get('clear') and request.GET.get('add')=='clear' ):
        request.session['items'] = []
        request.session.modified = True


    context = {'items' : request.session['items']}


    return render(request, 'shop/shop_product.html', context)

然后在你的HTML中:

<form action="#" method="get">
    <input type="submit" value="add" class="add" name="add">
    <input type="submit" value="clear" class="clr" name="clear">
</form> 

希望这对你有用。