Перенаправление на другую страницу после публикации вызова ajax для просмотра в django

-2

Я пытался заставить этот простой кусок кода работать нормально, но все равно не могу. Прошли несколько других ссылок. Я не могу понять, что я делаю неправильно. У меня есть функция javascript submitData() которая просто должна сделать post вызов ajax для представления django. В представлении 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() функцией render_to_response(), не происходит. Вместо этого post вызов возвращается, и выводится post о предупреждении в post вызове "Назад из views.py". Я не уверен, чего я упускаю.

  • 0
    Пожалуйста, покажите код render_to_response
  • 0
    Функция loggedin() в views.py имеет render_to_response (). Я просто использую render_to_response() , заданную библиотекой django dshango.shortcuts. Код как в?
Показать ещё 1 комментарий
Теги:

1 ответ

2

Вы можете перенаправить после post успешного завершения с помощью JavaScript.

function submitData()
    {
      $.post('/loggedin/',{"fname":"name1","lname":"name2"},function(data){
        alert("Back from views.py");
        window.location = 'yourpage.hmtl'
      });
    }

Или, если вы отправляете имя страницы в ответ, вы можете использовать data для перенаправления на страницу.

  • 0
    Но я думаю, что это только отправка ответа на ваш вызов ajax.
  • 0
    Этот способ работает ... но нельзя ли сделать то же самое из самого представления django?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню