我正在使用聊天 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);
});
});
```
我觉得很愚蠢,这甚至不是我应该发布的答案,那是早上 7 点,当我发布这个时我已经整晚没睡了,但是是的,这是一个错字
headers: { 'Content-Type': 'application/x-www-form-urleencoded',
应该是 headers: { 'Content-Type': 'application/x-www-form-urlencoded',
您使用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')