2015-07-24 4 views
1

У меня есть следующие формы в моем forms.py:представить форму с должности на основе условий в Джанго

class PaymentMethodForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     super(PaymentMethodForm, self).__init__(*args, **kwargs) 
     payment_choices = ['online payment', 'payment at delivery'] 
     self.payment_method_choice = forms.ChoiceField(choices=payment_choices, widget=forms.RadioSelect) 

теперь это страница в интернет-магазине, где вы выбираете способ оплаты. как вы видите, у нас есть два метода: один - оплата во время доставки, что означает, что на сайте не должно быть никаких платежей, а другое - онлайн-оплата. В случае пользователь выбирают онлайн-платежей, я должен отправить форму через пост, который выглядит примерно так и после этого перенаправить пользователя на URL действия:

<form id="Form2" method="post" Action="https://somepaymentsite.com/gateway.aspx" 
> 
<input type="hidden" name="invoiceNumber" value="<%= invoiceNumber %>" 
/> 
<input type="hidden" name="invoiceDate" value="<%= invoiceDate %>" /> 
<input type="hidden" name="amount" value="<%= amount %>" /> 
<input type="hidden" name="terminalCode" value="<%= terminalCode %>" /> 
<input type="hidden" name="merchantCode" value="<%= merchantCode %>" /> 
<input type="hidden" name="redirectAddress" value="<%= redirectAddress 
%>" /> 
<input type="hidden" name="timeStamp" value="<%= timeStamp %>" /> 
<input type="hidden" name="action" value="<%= action %>" /> 
<input type="hidden" name="sign" value="<%= sign %>" /> 
<input type="submit" name="submit" value="‫"continue‬ /> 
</form> 

теперь, что я имею в виду для этого является что вместо того, чтобы помещать этот материал html в мой шаблон (html-файл), я получу выбранный пользователем переключатель, и если они выбрали онлайн-платеж, я отправлю форму, подобную приведенной выше, в моих views.py. проблема в том, что я не знаю, как это сделать. Я googled вещи, но я не нашел ничего хорошего о том, как отправить форму в виде в django. Кто-нибудь может мне помочь? Благодарю.

ответ

1

Если я правильно понял, «отправить форму с точки зрения» - это то же самое, что и запрос POST на https://somepaymentsite.com/gateway.aspx с данными {'invoiceNumber': 12345, 'invoiceDate': '10.10.2015', ...}. В этом случае вы можете использовать библиотеку requests.

# in view 
# if online payment then 
r = request.post('https://somepaymentsite.com/gateway.aspx', data=payload) 
# processing r (error handling or something else) 

где payload является словарь {'invoiceNumber': 12345, 'invoiceDate': '10.10.2015', ...}, что вы строите так или иначе.

+0

Это замечательный ответ сэр или леди! но я, возможно, забыл прояснить свой вопрос, и я сделаю это сейчас, сделаю ли это сообщение также перенаправить пользователя? потому что мне нужно перенаправить пользователя на сайт оплаты также после публикации. –

+0

return HttpResponseRedirect ()? – f43d65

+0

нет, я хочу опубликовать данные и перенаправить в одно и то же время, иначе я не уверен, что публикация и перенаправление будут работать. так будет? и если нет, могу ли я сделать оба одновременно? –

Смежные вопросы