从 ajax 向 python 函数发送 post 请求但收到 GET 请求?
Posted
技术标签:
【中文标题】从 ajax 向 python 函数发送 post 请求但收到 GET 请求?【英文标题】:Sending A post request from ajax to a python function but receiving a GET request? 【发布时间】:2015-07-25 16:25:13 【问题描述】:我是 Django 新手。我正在向 python 函数发送一个 ajax POST 请求,该函数又将数据存储在来自 ajax 的变量中并返回 HttpResponse。所以我在 python 中检查了 request.method,它以 GET 形式出现。
$.ajax(
url:"create_post/",
type:"POST",
data : F_Name: First_Name ,L_Name: Last_name,Eadd: Email , Password: Pass,
success:function()
window.location.href="create_post/";
console.log ("Success")
,
cache:false,
failure: function(errMsg)
alert(errMsg);
);
这是我的 ajax 请求。
它将数据发送到这个函数。
def create_post(request):
if request.method == 'GET':
First_name=request.GET['F_Name'];
Last_Name=request.GET["L_Name"];
Email_address=request.GET["Eadd"];
Pass=request.GET["Password"];
return HttpResponse("<html><body>hi this is me .</body></html>");
当我检查为return(request.method)
时,它给了我GET
。
有人可以解释这种行为吗?
在函数中我有request.method==GET
在这种情况下DJango 给我内部服务器500 错误。
谢谢
【问题讨论】:
我仍然收到相同的 GET 请求,我将type
替换为 method
如果您收到 500 错误,您确定它正在发送 GET 请求吗?你能显示你的 URL 配置吗?
在views.py中我检查了它...def create_post(request): return HttpResponse(request.method)
我得到了GET。所以这意味着它是一个GET请求?
在您的浏览器开发者选项中检查触发的请求是作为 POST 还是 GET(在浏览器端)发送。
你可以print request.method
看看你的控制台是打印POST还是GET
【参考方案1】:
我很惊讶地看到你们没有人注意到他在他的 ajax 中定义了方法:“POST”,并且他的函数用于“GET”请求。
他得到 print request.method = "GET" 和 500 错误输出的主要原因是在他的 ajax 成功函数中使用了 window.location.href="create_post/" 。除非我们明确将其定义为“POST”或其他任何请求,否则每个请求默认都是一个 get 请求。
所以这里是这样的, - Ajax 通过 POST 调用 url,由于未知原因,响应在成功函数中出现(根据发布的 POST 方法的视图,奇怪的 coz 不会向 ajax 请求返回任何内容)。 - 成功函数再次通过 GET 请求调用相同的 url(页面刷新),他将 print request.method 视为“GET”并出现 500 错误,因为这是错误的做法。
【讨论】:
很抱歉,当我学习 Django 时,我不知道如何使用网络。但是非常感谢您的关注。【参考方案2】:你的 ajax 方法是 post,所以我认为你的 views.py 可以试试这个
def create_post(request):
if request.method == 'POST':
First_name=request.POST['F_Name']
Last_Name=request.POST["L_Name"]
Email_address=request.POST["Eadd"]
Pass=request.POST["Password"]
return HttpResponse("<html><body>hi this is me .</body></html>")
【讨论】:
在views.py中我检查了它...def create_post(request): return HttpResponse(request.method)
我得到了GET。所以这意味着它是一个GET请求?以上是关于从 ajax 向 python 函数发送 post 请求但收到 GET 请求?的主要内容,如果未能解决你的问题,请参考以下文章