Как создать представление для случайного URL? - PullRequest
0 голосов
/ 20 марта 2019

Я принимаю платежи на своем сайте и решил использовать Stripe.Это работает так, что, когда платеж завершен или отменен, он перенаправляется на страницу в зависимости от того, что произошло.Как я могу создать представление, которое проверяет параметр GET моего случайно сгенерированного 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", Как я могу создать динамическое представление, которое проверяет идентификатор параметра GET, чтобы я мог запрашивать некоторые вещи из базы данных?

Если есть лучший способ сделать это, не стесняйтесь, дайте мне знать.Любая помощь с благодарностью.

1 Ответ

2 голосов
/ 20 марта 2019

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')

Ваше представление получает payment_id от URL в качестве аргумента:

def accepted(request, payment_id):
    # verify payment ID

Кстати.Вы, вероятно, хотите изменить <payment_id> в path на <int:payment_id>, если вы ожидаете int.Или вы можете использовать re_path и даже выполнить проверку регулярного выражения для лучшего соответствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...