如何为随机网址创建视图?

时间:2019-03-20 13:13:38

标签: django

我正在接受我网站上的付款,因此我选择使用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,以便查询一些数据库内容?

如果有更好的方法可以执行此操作,请随时告诉我。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

如果未找到None,它将返回id,因此您需要手动进行异常管理。您还可以使用以下方法:

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

顺便说一句。您可能希望将<payment_id>中的path中的<int:payment_id>更改为int。或者,您可以使用re_path甚至进行正则表达式检查以更好地匹配。