我正在接受我网站上的付款,因此我选择使用Stripe。它的工作方式是,当付款完成或取消时,它会根据发生的情况重定向到页面。我该如何创建一个视图来检查随机生成的url的GET参数,以便执行代码工作?
payment = stripe.checkout.Session.create(
success_url="https://myurl.com/dashboard/payment/accepted/?id=MyvariableID",
cancel_url="https://myurl.com/dashboard/payment/declined",
payment_method_types=["card"],
client_reference_id= stripeUID,
line_items=[
{
"amount": 2000242,
"quantity": 1,
"name": "Blender rendering",
"currency": "usd",
}
]
)
因此,假设用户付款已确认,并且他已重定向至success_url="https://myurl.com/dashboard/payment/accepted/?id=MyvariableID",
如何创建一个动态视图来检查GET参数ID,以便查询一些数据库内容?
如果有更好的方法可以执行此操作,请随时告诉我。任何帮助将不胜感激。
答案 0 :(得分:2)
在上面的示例中,您的URL始终为https://myurl.com/dashboard/payment/accepted/
,因为?id=MyvariableID
只是一个GET参数。
只需创建一个简单的URL路径,如下所示:
from yourapp import views
path('dashboard/payment/accepted/', views.accepted, name='accepted')
在您看来,您可以通过request.GET
访问该参数。例如:
def accepted(request):
payment_id = request.GET.get('id')
if payment_id is not None:
# do something
else:
# no payment ID found
如果未找到None
,它将返回id
,因此您需要手动进行异常管理。您还可以使用以下方法:
def accepted(request):
try:
payment_id = request.GET['id']
# verify payment ID
except KeyError:
# no payment ID found
如果您希望ID作为URL的一部分,那么情况看起来会有所不同。首先,您的URL配置如下所示:
from yourapp import views
path('dashboard/payment/accepted/<payment_id>/', views.accepted, name='accepted')
您的视图从URL获得payment_id
作为参数:
def accepted(request, payment_id):
# verify payment ID
顺便说一句。您可能希望将<payment_id>
中的path
中的<int:payment_id>
更改为int
。或者,您可以使用re_path
甚至进行正则表达式检查以更好地匹配。