Вид принимает 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)

).
Вернуться на верх