Django 请求返回 null?

问题描述 投票:0回答:2

我正在使用聊天 GPT 的 API 通过 Django 构建一个聊天机器人,并且正在遵循本教程 https://www.youtube.com/watch?v=qrZGfBBlXpk。 无论如何,我没有看到我的代码有任何区别,但当我在消息发送过程中从 html mile 请求时,我遇到了一个特殊的问题,它从“聊天机器人”返回 null

def chatbot(request):
    if request.method == 'POST':
        message = request.POST.get('message')
        response = message
        return JsonResponse({'message': message, 'response': response})
    return render(request, 'chatbot.html')

更奇怪的是当我在 JS 中控制台记录消息时

messageForm.addEventListener('submit', (e) => {
        e.preventDefault();

        const message = messageInput.value.trim()
        console.log('Message:', message)

它显示在日志中吗?但在某处它返回 null?我注意到,当我使用达芬奇模型时,聊天会做出响应,但只是无意义,这对我来说意味着它实际上没有收到我的消息,它正在变得空并返回无意义

这是 JS 的其余部分

const messageItem = document.createElement('li');
    messageItem.classList.add('message', 'sent');
    messageItem.innerHTML = `<div class="message-sender">
                                <div class="message-sender"
                                    <b>You<b>
                                </div>
                                <div class="message-content">
                                    ${message}
                                </div>
                            </div>`;
    messageList.appendChild(messageItem);
    messageInput.value = '';

    const csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value;

    fetch('', {
        method: 'POST',
        headers: { 'Content-Type': 'application/x-www-form-urleencoded',
        'X-CSRFToken': csrftoken
        },
        body: new URLSearchParams({
            'csrfmiddlewaretoken': csrftoken,
            'message': message
        })
    })

      .then(response => response.json())
      .then(data => {
        const response = data.response;
        const messageItem = document.createElement('li');
        messageItem.classList.add('message', 'recieved');
        messageItem.innerHTML = `
        <div class="message-text">
            <div class="message-sender"
             <b>AI Helper<b>
            </div>
            <div class="message-content">
                ${response}
            </div>
        </div>
          `;
          messageList.appendChild(messageItem);
      });
    });
    ```
python django fetch-api chatbot openai-api
2个回答
0
投票

我觉得很愚蠢,这甚至不是我应该发布的答案,那是早上 7 点,当我发布这个时我已经整晚没睡了,但是是的,这是一个错字

headers: { 'Content-Type': 'application/x-www-form-urleencoded',

应该是 headers: { 'Content-Type': 'application/x-www-form-urlencoded',


0
投票

您使用request.body,因此更正如下:

if request.method == 'POST':
    post_dict = json.loads(request.body)
    message = post_dict['message']
    response = message
    return JsonResponse({'message': message, 'response': response})
return render(request, 'chatbot.html')
© www.soinside.com 2019 - 2024. All rights reserved.