Ошибка Page not found (404) в Django при создании сессии оформления заказа с помощью Stripe

Я работаю над своим первым проектом по интеграции Stripe в Django и столкнулся с проблемой, решение которой мне не удалось найти. Я пытаюсь создать сессию, с помощью которой пользователи могут быть перенаправлены на страницу, где они могут произвести оплату. Вот мой views.py:

class ProductLandingPageView(TemplateView):
    template_name = "landing.html"

    def get_context_data(self, **kwargs):
        product = Product.objects.get(name="Test Product")
        context = super(ProductLandingPageView, self).get_context_data(**kwargs)
        context.update({
            "product": product,
            "STRIPE_PUBLIC_KEY": settings.STRIPE_PUBLISHABLE_KEY
        })
        return context

class CreateCheckoutSessionView(View):
    def post(self, request, *args, **kwargs):
        product_id = self.kwargs["pk"]
        product = Product.objects.get(id=product_id)
        YOUR_DOMAIN = "http://127.0.0.1:8000"
        checkout_session = stripe.checkout.Session.create(
            line_items=[
                {
                    # Provide the exact Price ID (for example, pr_1234) of the product you want to sell
                    'price': '{{product.price}}',
                    'quantity': 1,
                },
            ],
            metadata={
                "product_id": product.id
            },
            mode='payment',
            success_url=YOUR_DOMAIN + '/success/',
            cancel_url=YOUR_DOMAIN + '/cancel/',
        )
        return redirect(checkout_session.url, code=303)

Вот мой urls.py;

urlpatterns = [
    path('', ProductLandingPageView.as_view(), name='landing'),
    path('success/', SuccessView.as_view(), name='success'),
    path('cancel/', CancelView.as_view(), name='cancel'),
    path('create-checkout-session/<pk>', CreateCheckoutSessionView.as_view(), name='create-checkout-session'),
]

Также вот шаблон, где находится кнопка оформления заказа:

<body>
    <section>
      <div class="product">
        <!-- <img src="https://i.imgur.com/EHyR2nP.png" alt="The cover of Stubborn Attachments" /> -->
        <div class="description">
          <h3>{{product.name}}</h3>
          <h5>${{product.price}}</h5>
        </div>
      </div>
      <form action="/create-checkout-session" method="POST">
        <button type="submit" id="checkout-button">Checkout</button>
      </form>
    </section>
    {% csrf_token %}
  </body>
   <script type="text/javascript">
        const csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value;
        // Create an instance of the Stripe object with your publishable API key
        var stripe = Stripe("{{ STRIPE_PUBLISHABLE_KEY }}");
        var checkoutButton = document.getElementById("checkout-button");
    checkoutButton.addEventListener("click", function () {
        fetch("{% url 'create-checkout-session' pk=product.id %}", {
        method: "POST",
        headers: {
            'X-CSRFToken': csrftoken
        }
      })
        .then(function (response) {
          return response.json();
        })
        .then(function (session) {
          return stripe.redirectToCheckout({ sessionId: session.id });
        })
        .then(function (result) {
         
          if (result.error) {
            alert(result.error.message);
          }
        })
        .catch(function (error) {
          console.error("Error:", error);
        });
    });
    </script>

</html>

Прилагается скриншот ошибки в браузере Скриншот ошибки

Любая помощь будет высоко оценена.

Ваш urls.py ожидает, что вы предоставите pk в качестве параметра URL, на картинке вы ничего не предоставляете. Поэтому urls.py никогда не найдет правильный маршрут.

И пожалуйста, urls.py:

urlpatterns = [
    ...
    path('create-checkout-session/<int:pk>', CreateCheckoutSessionView.as_view(), name='create-checkout-session'),
]
Вернуться на верх