2013-11-28 2 views
0

Я пытаюсь перенаправить на другое представление в приложении django. Прямо сейчас, у меня есть ajax-вызов представления update_view, и оттуда я пытаюсь перенаправить на другое представление, называемое gameover, с game_id.Перенаправление на другой Просмотр в Django

В настоящее время я пытаюсь это:

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

Однако, когда я делаю это, он не будет загружать страницу и любой другой метод, я пытался всегда «update_view» в URL, что неверно, так как отображение URL-адресов имеет выход из корня.

Благодарим за помощь!

+0

Если это ajax-вызов, перенаправление произойдет для запроса ajax, поэтому ваша основная страница останется прежней. – Rohan

ответ

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/. Существует метод shothand для создания должности, $.post(), я просто решил использовать стандарт $.ajax() для демонстрационных целей.

+0

спасибо, что сейчас имеет большой смысл. Я обязательно это сделаю. – user1186173

+0

Добро пожаловать. Рад, что смог помочь. – Brandon

Смежные вопросы