如何为随机URL创建视图



我正在接受网站上的付款过程,我选择使用条纹。它的工作方式是,付款完成或取消后,将其重定向到页面,具体取决于发生的事情。如何创建一个查看我随机生成的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,甚至可以进行正则表达式检查以获得更好的匹配。

最新更新