尝试向openAI发送POST请求,输入为:
{"write hello world"}
但遇到了以下错误:
TypeError: View.__init__() takes 1 positional argument but 2 were given
这是我的视图代码:
def get_help(user_input): response = openai.Completion.create( engine="text-davinci-002", prompt="user_input", temperature=0.5, max_tokens=1024, top_p=1, frequency_penalty=0, presence_penalty=0 ) return response["choices"][0]["text"]@api_view(['POST'])class receive_response(View): def post(self, request): user_input = request.POST["user_input"] response = get_help(user_input) return HttpResponse(response)
这是我的urls.py文件:
urlpatterns = [ path("get", get_help, name="get_help"), path("post", receive_response, name="post"),]
回答:
你的问题出在这行代码上: class receive_response(View):
(为什么receive_response要继承自View?)
本质上发生的事情是:
- 接收到
POST请求 - 初始化
request_received对象(使用POST的参数,其中必须有两个) - 由于它继承自
View(并且没有指定__init__(),父类的__init__()会接收相同的输入) - 由于
View.__init__()接受单个输入值,但它收到了两个,因此你得到了错误:TypeError: View.__init__() takes 1 positional argument but 2 were given
在你的类中添加def __init__(self, v1, v2):声明,并调试以查看v1/v2是什么(并决定将哪个/什么传递给super().__init__()(View的构造函数))