Django,使用JQuery在div中请求一个页面,但如何让页面请求没有其他地方刷新?

时间:2015-03-10 16:01:56

标签: jquery html django

enter image description here

我的页面就像上面的图片一样。我想点击左边的链接来操纵右边的主要区域。 我们知道框架集和框架在html5中不支持,而iframe可能不太好。所以我想用ajax / jquery来获取它。

页面html如下:

<div id="left">
    <ul>
        <li onclick="jump('/login/')">link1</li>
        <li onclick="jump('/login/')">link2</li>
    </ul>
</div>
<div id="main">{# show page here #}</div>

现在我可以使用jquery打开带有登录页面的主要右侧区域而不刷新其他位置

function jump(url){
  $("#main").load(url,function(){ $("#main").fadeIn(100);}
);}

它有效。页面显示如上图所示。 现在我想按下登录按钮。无论是否登录成功,下一页仍显示在主要右侧区域而不刷新其他位置

我希望它像这样显示

enter image description here

url.py:

url(r'^login/$','login',name='login'),

登录视图:

def login(request):
    do some login work
    return HttpResponseRedirect(...)  # it can't work,it redirect to absolutely
                                        another page
    return render_to_respose(....)  # it stay at the top-left-right/main page,
                                    but in main div it show nothing, totally blank.

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您无法在登录时重新呈现模板。您需要返回替换页面区域所需的HTML,或者需要返回JSON并处理客户端部分所需的html渲染,可能通过下划线提高效率。

无论哪种方式,您都需要在客户端处理有问题的HTML的替换。有很多方法可以做到这一点......原始的JavaScript,jQuery,下划线......这是一个非常广泛和高度自以为是的问题。