0

HTML で記述された非フォーム ボタンまたはリンクを Django の Python コードに接続するにはどうすればよいですか? 具体的には、href="/some-link" を使用してページをリダイレクトする HTML のボタンがあるとします。そのようなボタンが押されたときに、Django で特定の情報をセッションに保存する (つまり、どのボタンが押されたかを保存する) にはどうすればよいですか?

基本的に、views.py で次のようなことをしたいと考えています。

if request.POST['form-type'] == u"purchase-button":
# save some info before redirecting the page
   request.session['some-variable'] = 'the-purchase-button-was-pressed'
   return redirect('some-link')

...ただし、これはフォームではないため、実際にはできません。

次の HTML を何らかの方法で変更しますか?

<a href="/some-link">Purchase</a>

私は Django と Web 開発全般に少し慣れていないので、どんな助けでも大歓迎です。

(基本的に、私は次のリンクでここに提起された正確な質問を持っていますが、私は答えに本当に満足していませんでした: Django: How to trigger a session 'save' of form data when click a non-submit link )

編集:

以下に示すように、最終的に空白のフォームを使用しました。これにより、ユーザーが実際に情報を入力しなくても、以下の Python コードで押されたボタンを参照できました。

HTMLで:

 <form id="purchase" action="" method="post" name="purchase">
 {% csrf_token %}

     <input type="hidden" name="form-type" value="purchase" /> <!-- set type -->
     <input type="hidden" name="form-id" value="{{ item.id }}" /> <!-- set item ID -->

     <button name="purchase" type="submit" id="purchase-submit" data-submit="...Sending">Purchase</button>

 </form> 

views.py で:

if request.POST['form-type'] == u"purchase":
    # this allows me to call the corresponding item by its ID
    desired_item = StoreItem.objects.get(id=str(request.POST['form-id']))

    # this saves information about the desired item 
    request.session['item_name'] = str(desired_item.title)
    request.session['item_id'] = str(request.POST['form-id'])
    request.session['amount'] = str(desired_item.price)

    return redirect('shipping')

これにより、ユーザーが他の情報を入力しなくても、ボタンから情報を取得して views.py で使用できます。

4

1 に答える 1