Как я передаю шаблонную контекстную информацию при использовании HttpResponseRedirect в Django?

std::vector гарантии, что объекты хранятся в непрерывном массиве и являются поэтому предпочтительной заменой массивов и могут также использоваться для взаимодействия через интерфейс с зависимым от платформы кодом низкого уровня (как вызовы API Win32). Получить указатель на использование массива:

&myVector.front();
38
задан Jeff 23 September 2009 в 01:19
поделиться

5 ответов

Лучшим способом, вероятно, было бы использовать закодированную строку запроса в URL-адресе перенаправления ... это старый подход.

Вы могли бы сделать что-то вроде

/ page /? M = 1, / page /? M = 2 и т. Д.

Затем вы должны проанализировать эту переменную с помощью request.GET в коде представления и показать соответствующее сообщение.

7
ответ дан 27 November 2019 в 03:26
поделиться

Вы не можете. HttpResponseRedirect отправляет клиентское перенаправление (код статуса HTTP 302) в браузер, а затем браузер повторно запрашивает другую страницу.

Вы можете установить строку запроса URL-адреса для перенаправления, хотя она будет видна пользователю и любой, кто перехватывает HTTP-запросы (например, прокси), и поэтому не подходит для конфиденциальной информации.

6
ответ дан 27 November 2019 в 03:26
поделиться

Единственный известный мне способ передать любой data с перенаправлением - это добавить параметры GET к URL-адресу, который вы передаете. Чтобы избежать взлома XSS, вам нужно передать конкретную константу, например:

[текущий путь, по которому вы проходите]? Message = saved

А затем обработайте параметр message = saved в обработчике для пути, который вы передали.

Несколько более сложным способом было бы не передавать данные в перенаправлении, и вместо этого использовать что-то вроде http://code.google.com/p/django-notify/ для хранения данных сеанса, которые отображаются пользователю после перенаправления.

1
ответ дан 27 November 2019 в 03:26
поделиться

Вы добавляете? Saved = 1 в строку запроса и проверяете это примерно так:

saved = request.GET.get('saved', False)
0
ответ дан 27 November 2019 в 03:26
поделиться

если вы используете аутентификацию и вошли в систему, вы можете:

http://docs.djangoproject.com/en /dev/topics/auth/#django.contrib.auth.models.User.message_set.create

Параметры GET также можно взломать. Можно использовать строку запроса, как упоминалось в других ответах.

Я думаю, что наиболее предпочтительным способом было бы использовать структуру сеансов. Таким образом, вы можете загрузить в контекст все, что захотите, и получить

{{ request.session.foo }} 

foo может быть сообщением или вы можете сделать:

{% ifequal request.session.foo 1 %} Nice work! {% else %} Almost! {% endifequal %}

и другие забавные вещи.

http://docs.djangoproject.com / en / dev / themes / http / sessions / # using-sessions-in-views

11
ответ дан 27 November 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: