【发布时间】:2018-09-08 00:12:27
【问题描述】:
我已经为 Django 集成安装了Chatterbot。我在每一步都遵循了简单的教程,并将端点设置为:http://127.0.0.1:8000/chatterbot/ 我接下来要做的是尝试与该端点通信,看看我是否会得到任何结果。于是我提出了一个Ajax请求如下:
var query = {"text": "My input statement"};
$.ajax({
type: 'POST',
url: "http://127.0.0.1:8000/chatterbot/",
data: JSON.stringify(query),
contentType: 'application/json',
success: function (data) {
console.log(data);
}
});
但是,控制台中返回的是:POST http://127.0.0.1:8000/chatterbot/ 403 (Forbidden),当我运行服务器时,cmd 提示符中返回的是:
csrf:警告 - 禁止(CSRF 令牌丢失或不正确。): /chatterbot/ [29/Mar/2018 02:16:43] "POST /chatterbot/ HTTP/1.1" 403 2502
为什么会出现此错误?如何修复它以便我收到来自端点的回调?
查看此页面:
def IndexView(request):
latest_questions = Questions.objects.all().order_by("-date_published")[:5]
popular_questions = Questions.objects.all().order_by("-num_replies")[:5]
return render(request, 'core/index.html',
{'latest_questions': latest_questions, 'popular_questions': popular_questions
})
【问题讨论】:
-
我能看到你的控制器或视图吗?
-
你可以用一个简单的装饰器来解决这个问题。
-
@mehrdad-pedramfar 我用视图更新了它,你如何用装饰器修复它?
-
我添加了一个答案。 csrf_exempt 装饰器从您的服务中移除对 csrf 令牌的要求。如果它不起作用,请更新我。
-
docs.djangoproject.com/en/2.0/ref/csrf 请点击链接。你会得到足够的想法。