重定向到Django中的另一个视图

时间:2013-11-28 02:53:37

标签: python django

我正在尝试重定向到django应用中的另一个视图。现在,我对update_view视图进行了ajax调用,并从那里尝试使用game_id重定向到另一个名为gameover的视图。

目前,我正在尝试这个:

def update_view(request):
    return HttpResponseRedirect(reverse('gameover', args=(game_id,)))

然而,当我这样做时,它不会加载页面,我尝试过的所有其他技术在URL中总是有“update_view”,这是不正确的,因为url映射的游戏从游戏中脱离。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

因为你是通过Ajax调用视图,所以你需要在客户端进行重定向,通过传回URL重定向到或提前知道它。使用该URL,您可以在JavaScript中更改位置。我只是将您要重定向的URL返回为JSON。这个例子假设你使用jQuery来进行Ajax调用:

import json

def update_view(request):
    # more code
    redirect_url = reverse('gameover', args=(game_id,), kwargs={})
    return HttpResponse(json.dumps({'redirect_url': redirect_url},
        ensure_ascii=False), mimetype='application/json')

(function($) {

    $(function() {
        $.ajax({
            type: 'post',
            url: 'path/to/your/view/',
            dataType: 'json',
            success: function(data, textStatus, jqXHR) {
                window.top.location = data.redirect_url;
            }
        });
    });

})(jQuery)

您可以在此处了解有关jQuery Ajax实现的更多信息:http://api.jquery.com/jQuery.ajax/。有一种用于发帖的方法$.post(),我只是选择使用标准$.ajax()进行演示。