Django + неформальные кнопки: как подключить неформальную кнопку или ссылку на Python-код django в views.py? - PullRequest
0 голосов
/ 13 января 2019

Как мне подключить неформальную кнопку или ссылку, написанную на 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, даже если пользователь не вводит никакой другой информации.

1 Ответ

0 голосов
/ 13 января 2019

Я бы отправил его как запрос GET с параметрами, установив кнопку для перенаправления на "/some-link/?button=PURCHASE".

Итак, в views.py у вас будет «request.GET ['button']», и его значение будет «ПОКУПАТЬ».

...