使用 PK <int:pk> 将 django 反转为 url
Have a django reverse to a url with PK <int:pk>
我正在按照 This 使用 PayPal 设置付款的教程
我的问题是 paypal_dict 因为它包含这个
paypal_dict = {
...
'return_url': 'http://{}{}/{}'.format(host,
reverse('payment_done')),
...
}
和我的 payment_done URL 需要有一个交易本身的 ID,我不确定我怎么能在这个里面有一个 pk
这是我的全部 URLs.py
...
# Payment
path('payment/process/<int:trade_id>/', payment_views.payment_process, name="payment_process"),
path('payment/done/<int:trade_id>/', payment_views.payment_done, name="payment_done"),
...
我满process_paypal
def payment_process(request, trade_id):
trade = get_object_or_404(Trade, id=trade_id)
host = request.get_host()
paypal_dict = {
'business': settings.PAYPAL_RECEIVER_EMAIL, # todo WHO TO PAY
'amount': Decimal(trade.price),
'item_name': trade.filename,
'invoice': str(trade.id),
'currency_code': 'USD',
'notify_url': 'http://{}{}'.format(host,
reverse('paypal-ipn')),
'return_url': 'http://{}{}/{}'.format(host,
reverse('payment_done')),
'cancel_return': 'http://{}{}'.format(host,
reverse('home')),
}
form = PayPalPaymentsForm(initial=paypal_dict)
return render(request, 'payment/payment_process.html', {'trade': trade, 'form': form})
您可以使用 args
或 kwargs
在 url 中传递 trade_id
。
paypal_dict = {
...
'return_url': 'http://{}{}'.format(host,
reverse('payment_done', kwargs={'trade_id': trade.id})),
...
}
我正在按照 This 使用 PayPal 设置付款的教程
我的问题是 paypal_dict 因为它包含这个
paypal_dict = {
...
'return_url': 'http://{}{}/{}'.format(host,
reverse('payment_done')),
...
}
和我的 payment_done URL 需要有一个交易本身的 ID,我不确定我怎么能在这个里面有一个 pk 这是我的全部 URLs.py
...
# Payment
path('payment/process/<int:trade_id>/', payment_views.payment_process, name="payment_process"),
path('payment/done/<int:trade_id>/', payment_views.payment_done, name="payment_done"),
...
我满process_paypal
def payment_process(request, trade_id):
trade = get_object_or_404(Trade, id=trade_id)
host = request.get_host()
paypal_dict = {
'business': settings.PAYPAL_RECEIVER_EMAIL, # todo WHO TO PAY
'amount': Decimal(trade.price),
'item_name': trade.filename,
'invoice': str(trade.id),
'currency_code': 'USD',
'notify_url': 'http://{}{}'.format(host,
reverse('paypal-ipn')),
'return_url': 'http://{}{}/{}'.format(host,
reverse('payment_done')),
'cancel_return': 'http://{}{}'.format(host,
reverse('home')),
}
form = PayPalPaymentsForm(initial=paypal_dict)
return render(request, 'payment/payment_process.html', {'trade': trade, 'form': form})
您可以使用 args
或 kwargs
在 url 中传递 trade_id
。
paypal_dict = {
...
'return_url': 'http://{}{}'.format(host,
reverse('payment_done', kwargs={'trade_id': trade.id})),
...
}