2011-01-04 2 views
3

Я знаю, что HttpResponseRedirect принимает только один параметр, URL. Но есть случаи, когда я хочу перенаправить с отображением сообщения об ошибке.Ошибка пропуска в Django с использованием HttpResponseRedirect

Я читал это сообщение: How to pass information using an HTTP redirect (in Django) и было много хороших предложений. Я действительно не хочу использовать библиотеку, которую я не знаю, как работает. Я не хочу полагаться на сообщения, которые, согласно документам Django, будут удалены. Я думал об использовании сеансов. Мне также нравится идея передачи его в URL, что-то вроде:

return HttpResponseRedirect('/someurl/?error=1') 

и затем с путеводителем от кода ошибки в сообщении. Хорошо ли иметь глобальную структуру, похожую на карту, которая жестко кодирует эти сообщения об ошибках или есть лучший способ?

Или я просто использовать сеанс

EDIT: Я получил это работает, используя сеанс. Является ли это хорошей практикой, чтобы такие вещи были на сессии?

+2

Вы уже читали о структуре сообщений? Если нет, почему бы и нет? –

+1

Как я уже сказал, я не уверен, что хочу поместить что-то в веб-приложение, которое устарело и будет удалено. Согласно документам Django «Устаревшие в Django 1.2: компонент« Сообщения »системы auth будет удален в Django 1.4». – JPC

+3

«Компонент« Сообщения »системы auth» не имеет отношения к структуре сообщений. Полностью несвязанный. Пожалуйста, не путайте их вообще. Пожалуйста, действительно прочитайте о структуре сообщений. –

ответ

9

Вы имеете право на сообщения об авторе. Они устарели, но поскольку docs предлагает вам вместо этого использовать django messages framework, что, я думаю, является точной душой для вашего дела.

+0

Я прочитал страницу сообщений. Это выглядит многообещающе. Кажется, что среда обмена сообщениями может быть настроена для хранения данных в сеансе. Одна вещь, которую я не совсем понимаю, одним из параметров является запрос. Например, я бы назвал message.error (запрос, поле «Email box full»), а затем передал сообщения шаблону. Однако, когда у меня есть HttpResponseRedirect, у меня есть новый запрос. Доступно ли мое сообщение в новом представлении? – JPC

+0

Да, это ..... сообщения хранятся в сеансе до тех пор, пока они не будут доступны. – crodjer

+1

@JPC: «Мое сообщение все еще доступно в новом представлении?» Первое предложение (# 1, lead-off, initial) следующее: «Django обеспечивает полную поддержку обмена сообщениями cookie и сеанса». Пожалуйста, прочитайте документацию. Это кажется ясным. Какая часть этого смутила вас? –

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