Мне кажется, вы хотите, чтобы переменные были доступны в двух отдельных запросах на сервер django - сначала вы хотите установить их, когда пользователь перейдет на вид edit
, затем вы хотите получить их в другом представлении, которое вызывает handle_upload
.
Здесь есть два варианта, в зависимости от фактических данных, которые вы хотите передать.
- Обращаем внимание на шаблон и добавьте его в скрытые поля в форме редактирования.
Это может быть самый простой способ, но будьте осторожны с конфиденциальными данными. Если вы не хотите, чтобы злонамеренные пользователи видели (и даже редактировали) эти данные, не делайте этого. Пользователи могут редактировать и редактировать скрытые html-поля, если у них плохие намерения. Не полагайтесь на правильность этой информации, если это может поставить под угрозу безопасность вашего сервера.
Прежде всего, я хотел бы посоветовать использовать render
вместо render_to_response
, поскольку последний устарел и скоро будет устаревшим. render
гарантирует, что вы есть RequestContext
объект, и требует, чтобы первый аргумент является фактическим request
объекта:
render(request, 'some_site.html', locals())
Затем в шаблоне, в виде:
<input type='hidden' name='name1' value='{{ dynamic_variable_1 }}' />
<input type='hidden' name='name2' value='{{ dynamic_variable_2 }}' />
Затем использовать request.POST.get('name1')
, чтобы получить значение от dynamic_variable_1
и т. д.
- Использовать сеанс промежуточного программного обеспечения.
Таким образом, данные будут оставаться на сервере и даже останутся объектом Python, поэтому он обрабатывает все виды объектов (я думаю, на 100% не уверен).
Во-первых, убедитесь, что 'django.contrib.sessions.middleware.SessionMiddleware'
находится в вашем MIDDLEWARE_CLASSES
в ваших settings.py. По умолчанию используется команда Django startapp
.
Затем выполните следующие действия в edit
:
request.session['name1'] = dynamic_variable1
request.session['name2'] = dynamic_variable2
Тогда в представлении, что вызывает handle_upload
, просто выполните следующие действия и передать переменные handle_upload
:
dynamic_variable1 = request.session['name1']
dynamic_variable2 = request.session['name2']
+1 по использованию сеансов – Basti
Спасибо. Сеансы работали как шарм. – TheAptKid