我正在接受网站上的付款过程,我选择使用条纹。它的工作方式是,付款完成或取消后,将其重定向到页面,具体取决于发生的事情。如何创建一个查看我随机生成的URL的获取参数的视图,以便我可以做代码操作?
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",
我如何创建一个动态视图,该视图检查获取参数ID,以便查询一些数据库内容?
如果有更好的方法可以做到这一点,请随时让我知道。任何帮助都非常感谢。
ID作为get参数
在上面的示例中,您的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
如果找不到id
,这将返回None
,因此您需要手动执行异常管理。您也可以使用以下方式:
def accepted(request):
try:
payment_id = request.GET['id']
# verify payment ID
except KeyError:
# no payment ID found
ID作为URL的一部分
如果您将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
顺便说一句。如果您期望int
,则可能需要将path
中的<payment_id>
更改为<int:payment_id>
。或者,您可以使用re_path
,甚至可以进行正则表达式检查以获得更好的匹配。