Как мне подключить неформальную кнопку или ссылку, написанную на HTML, к коду Python в Django? В частности, предположим, у меня есть кнопка в HTML, которая перенаправляет страницу с помощью href = "/ some-link". Как, скажем, сохранить определенную информацию в сеансе (т.е. сохранить, какая кнопка была нажата) в 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 и веб-разработке в целом, поэтому любая помощь будет высоко оценена.
(По сути, у меня есть точный вопрос, который был задан здесь в следующей ссылке, но я не был действительно удовлетворен ответом: Django: Как вызвать сеанс «сохранения» данных формы при нажатии на неподтвержденная ссылка )
EDIT:
В итоге я использовал пустую форму, как показано ниже, которая позволяет мне ссылаться на то, какая кнопка была нажата в приведенном ниже коде 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, даже если пользователь не вводит никакой другой информации.