Как мгновенно перенести данные из формы на другую страницу?
Помогите, пожалуйста! Я пишу простой сайт для пожертвований на Django. Хочу использовать платежную систему LiqPay.
Я описал форму, которая принимает данные от пользователя (def donation), но я не могу понять, как передать эти данные в другую функцию (class PayView, def get)
Я пробовал создать пользователя и затем взять из него поле 'amount', но я не хочу заставлять пользователей регистрироваться.
"PayView" отображается сразу после "submit" в "def donation"
Мой код:
views.py
def donation(request):
if request.method == 'POST':
form = CheckoutForm(request.POST)
if form.is_valid():
Donation.objects.create(**form.cleaned_data)
return redirect('pay_view')
else:
form = CheckoutForm()
return render(request, 'donation/donation.html', {'form': form})
class PayView(TemplateView):
template_name = 'donation/pay.html'
def get(self, request, *args, **kwargs):
liqpay = LiqPay(settings.LIQPAY_PUBLIC_KEY, settings.LIQPAY_PRIVATE_KEY)
params = {
'action': 'pay',
'amount': '1',
'currency': 'UAH',
'description': 'Допомога фонду',
'order_id': 'order_id_1',
'version': '3',
'sandbox': 1, # sandbox mode, set to 1 to enable it
'server_url': '', # url to callback view
}
signature = liqpay.cnb_signature(params)
data = liqpay.cnb_data(params)
return render(request, self.template_name, {'signature': signature, 'data': data})
forms.py
from django import forms
class CheckoutForm(forms.Form):
amount = forms.IntegerField()
first_name = forms.CharField()
last_name = forms.CharField()
phone = forms.CharField()
email = forms.EmailField()
Простите за глупый вопрос. Я очень новичок в этом.
Спасибо!
PayView отображается только после donation, тогда вы можете использовать django session
Вы можете сделать что-то вроде этого
def donation(request):
..
..
..
if form.is_valid():
donation_instance = Donation.objects.create(**form.cleaned_data)
request.session["donation_instance"] = donation_instance.id
return redirect('pay_view')
class PayView(TemplateView):
template_name = 'donation/pay.html'
def get(self, request, *args, **kwargs):
# to initialize none instance for references issue
donation_instance = Donation.objects.none()
if "donation_instance" in request.session:
donation_instance = Donation.objects.get(pk=request.session["donation_instance"])
<use_your_donation_obj_here>
...
...
Ссылки:
Официальная документация по django session находится здесь