【发布时间】:2016-11-30 03:59:13
【问题描述】:
我一直试图让这段简单的代码正常工作,但仍然无法做到。已经通过多个其他链接。我无法弄清楚我做错了什么。我有一个 javascript 函数 submitData() 只需对 django 视图进行 ajax post 调用。 django视图基本上只需要检查请求是否为post,如果是,则必须重定向到另一个页面。
我的 javascript 函数 submitData() 如下所示,并且还添加了负责发送 csrf 令牌和 post 请求的代码部分。
function submitData()
{
$.post('/loggedin/',{"fname":"name1","lname":"name2"},function(data){
alert("Back from views.py");
});
}
$(function () {
$.ajaxSetup({
headers: { "X-CSRFToken": getCookie("csrftoken") }
});
});
function getCookie(c_name)
{
if (document.cookie.length > 0)
{
c_start = document.cookie.indexOf(c_name + "=");
if (c_start != -1)
{
c_start = c_start + c_name.length + 1;
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) c_end = document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return "";
}
在我的views.py,我有以下代码,
def loggedin(request):
if request.method == "POST":
fname = request.POST.get('fname')
print fname #The code comes here, prints the fname
args = {}
args.update(csrf(request))
return render_to_response('loggedout.html',args,context_instance=RequestContext(request)) #This does not redirect to a different page
print "outside in loggedin"
args = {}
args.update(csrf(request))
return render_to_response('loggedin.html',args, RequestContext(request))
当调用post 时,fname 被打印,但假设由函数render_to_response() 发生的重定向没有发生。而是返回post 调用,并提醒post 调用“Back from views.py”中的警报语句。我不确定我错过了什么。
【问题讨论】:
-
请出示
render_to_response的代码 -
loggedin()中的views.py函数有render_to_response()。我只是使用 django 的 django.shortcuts 库提供的render_to_response()函数。代码如下? -
这里根本没有重定向。
标签: javascript ajax django