-1

就職面接用のショッピング カート アプリを作成しようとしています。数時間後に期限が切れるのですが、うまくいきません。

どんな提案も役に立ちます。これは、面倒な作業を行う製品ビューです。

def products(request, store_subdomain):
    store_db, store_products = database_selector(store_subdomain)
    context = RequestContext(request)
    if request.method == 'POST': #load catalog page with "item added"
        product = store_products.get(pk=request.POST['product_id'])
        cart = request.session.get('cart', {})
        if cart.get(product):
            cart['product_id'] += 1
        else:
            cart['product_id'] = 1
        request.session['cart'] = cart
    request.session.modified = True
        return render_to_response('catalog.html', 
                {'store_name': store_db.name, 'store_products': store_products, 
                'message':'Item Added'}, context_instance=context)  
    return render_to_response('catalog.html', 
        {'store_name': store_db.name, 
        'store_products' : store_products}, context_instance=context)

そして、カートに追加する必要がある関連するテンプレート部分:

<form method="post" action="." class="cart">{% csrf_token %}
    {{ form.as_p }}
    <br />
    Qty <input type="number" name="qty" value = "1"> </br>
    <button type="submit" value="{{p.id}}" name= "product_id" />Add to Cart</button>
</form>

そして、カートを呼び出すビュー:

def shoppingcart(request, store_subdomain):
    #load page of all shopping cart items
    store_db, store_products = database_selector(store_subdomain)
    return render_to_response('shoppingcart.html', 
            {'store_name': store_db.name, 
            'store_products': store_products, 
            'cart' : cart})

カートの中身を表示するテンプレートは次のとおりです。

{% for p,k in cart %}
<div class="product_image" >
        <img src="{{ STATIC_URL }}images/{{p.image}}" alt={{p.name}}/>      <br />
    </div>
    <h1><span property="v:name">{{ p.name }}</span></h1>
    <br />
    Price: {{ p.price|currency }} X Qty {{ k }} = 
{{cart}}

Post メソッドは確実にトリガーされていますが、ショッピング カート ページ (そこにあるすべての商品が表示されるはずです) に移動すると、空になっています。

4

2 に答える 2

1

何かを拡張しているため、テンプレートをブロックでラップする必要があります。{% extends %} タグの後にそのコードを挿入して、それが機能することを期待することはできません。

于 2013-01-25T13:41:00.293 に答える
1

cartリクエスト セッションでを設定した後、次の行を追加します。

...
request.session['cart'] = cart
request.session.modified = True

デフォルトのdjangoの動作はrequest.session、その属性のいずれかが変更されていない場合は保存されません。これは通常、dictが保存されている場合です。

セッションが保存されるときのその他のドキュメント

于 2013-01-25T08:06:21.390 に答える