Day13-3 sessionについてだぜい

# urls.py
urlpatterns = [
    ...
    ...
    path('change_item_amount', views.change_amount, name='change_amount'),
    ...
]

"""
何かボタンをhtmlにおきたい時はそれ専用のurlを作ったりもする。
でもリダイレクト先はviews.pyのどこかの関数に送ったりする場合もある。
今回で言えば、change_amount.htmlというのは存在しない。
っていうか作らない。なんせそんなの必要ないから。当然か。。。。
"""


# views.py

@login_required
@require_POST
def change_amount(request):
    product_id = request.POST["product_id"]
    bag_session = request.session['bag']
    if product_id in bag_session:
        if 'remove_amount' in request.POST:
            bag_session[product_id] -= 1
        if 'addon_amount' in request.POST:
            bag_session[product_id] += 1
        if bag_session[product_id] <= 0:
            del bag_session[product_id]
    return redirect('app:bag')


# xxx.html

{% block content %}

<form action={%  url 'app:change_amount' %} method='post'>{% csrf_token %}
    <input type="hidden" name="product_id" value="{product.id}">
    <input type="submit" name="remove_amount" value="一つ減らす">
    <input type="submit" name="addon_amount" value="一つ増やす">
</form>

{% endblock %}

・product_id = request.POST["product_id"].......product_idに送られて来たproduct_idを代入
・bag_session = request.session['bag'] ........'bag'というsessionを取り出して、bag_sessionに代入
・if product_id in bag_sessionの文から.......送られて来たproduct_idがbag_sessionの中に存在したら、
   ・'remove_amount'(htmlのinputのnameでつけたところ。formかinputはnameとvalueをペアにして情報を送る。)の情報が送られて来たら、bag_session[product_id]を一つ減らす。その下は逆のパターン
   ・で0個以下だったら、bag_session[product_id]を削除する。



っちゅう感じやな。よし。おけーーーーーい。次いいいいいいいいい!