Django集成Stripe预构建结账页出现__init__()参数不匹配TypeError
问题根源
你的报错是urls.py中类视图注册时漏加方法导致的:Django的类视图在URL配置中注册时,必须调用.as_view()方法将类转换为可调用的视图函数,你其余类视图都加了该方法,唯独create-checkout-session对应的路由漏写。
修复方案
修改urls.py中对应路由的代码即可:
from django.contrib import admin from django.urls import path from products.views import CreateCheckoutSessionView, ProductLandingPageView, Cancelview, Successview urlpatterns = [ path('admin/', admin.site.urls), path('cancel/', Cancelview.as_view(), name='cancel'), path('success/', Successview.as_view(), name='success'), # 这里补上.as_view(),路径末尾加斜杠符合Django默认路由规范 path('create-checkout-session/', CreateCheckoutSessionView.as_view(), name='create-checkout-session'), path('', ProductLandingPageView.as_view(), name='landing-page') ]
额外注意事项
- 若使用第一种需要填写
PRICE_ID的代码,请将占位符{{PRICE_ID}}替换为你Stripe后台实际创建的商品价格ID,不要保留模板占位语法。 - 确认
settings.py中已经正确配置了STRIPE_SECRET_KEY,测试环境直接使用Stripe后台提供的测试密钥即可。 - 测试支付流程时可使用Stripe官方测试卡:卡号
4242 4242 4242 4242,有效期填任意未来日期,CVV填任意3位数字即可走通完整测试流程。
内容的提问来源于stack exchange,提问作者Ystan
相关产品推荐
相关产品推荐

