Вид принимает 1 позиционный аргумент, но было приведено 2
Пытаюсь выполнить POST-запрос к openAI, но получаю ошибку
TypeError: View.__init__() takes 1 positional argument but 2 were given
Когда я пытаюсь что-то опубликовать:
{"write hello world"}
Вот мое мнение:
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
объект инициализируется (с args из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)