среда, 4 декабря 2013 г.

Вернуться к предыдущей странице в Django.

После обработки формы нужно вернуться на предыдущую страницу
Все легко и просто. Во view.py, в функцию отвечающую за вывод 2 страницы, вставляю:
return_path  = request.META.get('HTTP_REFERER','/')
return redirect(return_path)


Если надо вернуть url текущей страницы – request.path или request.get_full_patch

А что если я из списка (страница 1)  захожу на детальный просмотр данных объекта (страница 2), а потом выбираю «Редактировать» и попадаю на редактирование данных объекта (страница 3). После редактирования страницы 3 я нажимаю «готово» и мне нужно вернуться на страницу 1.
Я вышел из положения используя сессии (документация по использованию сессии - https://docs.djangoproject.com/en/dev/topics/http/sessions/)
Во view.py в функции отвечающую за вывод страницы 2 я добавил в сессии ключ 'return_path' и присвоил url предыдущей страницы:
request.session['return_path'] = request.META.get('HTTP_REFERER','/')
а функции отвечающей за вывод страницы 3, после сохранения формы данных, я обращаюсь к ключу 'return_path' сохраненному в сессии и возвращаюсь на 1 страницу
return redirect(request.session['return_path'])

1 комментарий:

  1. Спасибо огромное!!! По этой теме в других местах или не о чем, или идет троллинг. А тут все по делу и в самую точку!)))))

    ОтветитьУдалить