Django Ajax Post -有时工作



我有一个Django应用程序,我在提交表单时使用AJAX做一个帖子。我的问题是我在JavaScript中设置的URL是什么?

JavaScript代码片段:

$.ajax({
url: "search/do_post/", // the endpoint
type: "POST", // http method
data : {
relevancy: relevancy,
report_id: report_id,
query: query_text,
//csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
},

urls . py片段:

path("search/do_post/", do_post_view, name="do_post"),

我的问题是,有时以上工作,有时不。如果没有,我得到:

POST http://localhost:1227/search/search/do_post/404 (Not Found)

当我看到它时,我就从JavaScript中的url中删除了搜索部分。这有时行得通,有时行不通。

有什么建议吗?

您应该以斜杠开头来定义绝对路径,否则请求将发送到相对于当前路径的路径,因此/search而不是search:

$.ajax({
url:"/search/do_post/",
// …
},

也可以使用{% url … %}模板标签[Django-doc]更方便:

$.ajax({
url:"{% url 'do_post' %}",
// …
},