我有一个通过查看方法A呈现的购物车,我想通过pesapal package将购物车中的详细信息提交给pesapal api。我使用的方法与sandbox app, PaymentView相同。购物车有一个结账按钮,用于将数据提交给api。 Sandbox方法simlpy将数据作为字典(order_info)获取并输入到url(get_payment_url)然后提供api,因此当我打开模板时,api的iframe指示我正在绘制指定的amout。字典。如何通过购物车提交数据?
## Sandbox method submitting data to the api
class PaymentView(TemplateView, PaymentRequestMixin):
template_name = 'payment/payment.html'
# how the sandbox app submits data to api:
def get_context_data(self, **kwargs):
ctx = super(PaymentView, self).get_context_data(**kwargs)
order_info = {
'amount': '1000',
'description': 'Payment for Stuff',
'reference': 2,
'email': 'you@email.com'
}
ctx['pesapal_url'] = self.get_payment_url(**order_info)
return ctx
## view method A:
def show_cart(request, template_name="payment/cart.html"):
if request.method == 'POST':
postdata = request.POST.copy()
if postdata['submit'] == 'Remove':
cart.remove_from_cart(request)
if postdata['submit'] == 'Update':
cart.update_cart(request)
if postdata['submit'] == 'Checkout':
# submission to api should occur here
cart_items = cart.get_cart_items(request)
cart_subtotal = cart.cart_subtotal(request)
return render_to_response(template_name, locals(), context_instance=RequestContext(request))
# my url
urlpatterns = patterns('cart.views',
(r'^$', 'show_cart', { 'template_name': 'payment/cart.html' }, 'show_cart'),
)
答案 0 :(得分:1)
你可以通过让django将你的数据解析到模板或者在这种情况下你的购物车来快速得到它。这可以通过让您的方法返回所需的数据来完成。类似的东西:
return render(request, 'yourpage.html',
{'yourvariable':yourvariable}, context_instance=RequestContext(request))
然后只需在模板中获取您的值(在您的情况下为购物车),如:
{{yourvariable}}
然后让api完成剩下的工作。
答案 1 :(得分:0)
查看文档和source code,似乎没有设置任何数据的方法。你有一个例子吗?