Django项目TypeError上的条带集成

Posted

技术标签:

【中文标题】Django项目TypeError上的条带集成【英文标题】:Stripe integration on Django project TypeError 【发布时间】:2021-12-15 20:05:17 【问题描述】:

我是 Django 和 Stripe API 的新手。我正在关注 Stripe 文档,并将代码从文档复制到我的 view.py 文件中:

这是我的 views.py 文件

from django.shortcuts import render,redirect
from django.conf import settings
from django.urls import reverse
from django.views import View
import stripe
stripe.api_key = settings.STRIPE_SECRET_KEY

class Create_checkout_session (View):
    def post(self, request, *args, **kwargs):
        DOMAIN = "http://127.0.0.1:8000"
        checkout_session = stripe.checkout.Session.create(
                line_items=[
                    
                        # Provide the exact Price ID (e.g. pr_1234) of the product you want to sell
                        'price': 'price_id',
                        'quantity': 1,
                    ,
                ],
                payment_method_types=[
                'card',
                ],
                # mode can be subscription, setup, payment
                mode='payment',
                success_url=DOMAIN+'/success/',
                cancel_url=DOMAIN+'/cancel/',
            )

       
        return redirect(checkout_session.url, code=303)

这是我在支付应用中的 urls.py:

from django.urls import path, include

#import views.py
from . import views
app_name ='payment'
#set urls for the app
urlpatterns = [
   path('create-checkout-session/',views.Create_checkout_session, name='create-checkout-session')
]

我的错误信息是当我渲染这个页面时,我有:

/create-checkout-session/ 处的类型错误 init() 接受 1 个位置参数,但给出了 2 个 请求方法:GET 请求网址:http://127.0.0.1:8000/create-checkout-session/ Django 版本:3.2.8 异常类型:TypeError 异常值:init() 采用 1 个位置参数,但给出了 2 个 异常位置:/Users/hannah/Desktop/TDMock/venv/lib/python3.9/site-packages/django/core/handlers/base.py,第 181 行,在 _get_response Python 可执行文件:/Users/hannah/Desktop/TDMock/venv/bin/python

我将条带密钥和公钥放在设置文件中。 我还应该怎么做才能使集成工作?非常感谢。

【问题讨论】:

views.Create_checkout_session.as_view() 会解决你的问题 【参考方案1】:

我相信您的视图是基于类的视图,因此缺少“.as_view()”调用。 像这样写。 views.Create_checkout_session.as_view() 在你的 urls.py 文件中。

from django.urls 导入路径,包含

#import views.py
from . import views
app_name ='payment'
#set urls for the app
urlpatterns = [
   path('create-checkout-session/',views.Create_checkout_session.as_view(), name='create-checkout-session')
]

【讨论】:

以上是关于Django项目TypeError上的条带集成的主要内容,如果未能解决你的问题,请参考以下文章

反应原生问题中的条带集成

PyCharm 创建Django 第一个项目

记录 TypeError: render() got an unexpected keyword argument 'renderer' 错误

在 django 项目中出现 typeError 错误

Django:'TypeError:'HttpResponseForbidden'对象不可调用

mysql-connector-python cursor_cent.py 文件上的 Django 迁移错误“TypeError:序列项 1:预期类似字节的对象,str found”