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]を削除する。
っちゅう感じやな。よし。おけーーーーーい。次いいいいいいいいい!