Я работаю с Django, и мне нужно отправить данные через request.session
. У меня есть два простых просмотров:Django request.session не передается на следующее представление
- Один, который вычисляет и отображает результаты пользователю
- One, который сохраняет информацию после того, как пользователь нажал кнопку «Подтвердить»
Вот они :
def import_trunk_con(request) :
request.session.flush()
trunks = []
connections =[]
if request.method == 'POST':
form = ExcelFileForm(request.POST, request.FILES)
print(form.errors)
if form.is_valid():
[trunks, connections] = handle_trunk_file(request.FILES['excel_import_file'])
else:
form = ExcelFileForm()
context = {
'form': form,
'trunk_list' : trunks,
'connection_list' : connections
}
request.session['import_trunks'] = trunks
request.session['import_connections'] = connections
print(request.session['import_trunks']) #Prints the right result
print(request.session['import_connections']) #Prints the right result
template = loader.get_template('confWeb/import/import_trunk_con.html')
return HttpResponse(template.render(context, request))
И
def import_recap_trunks(request):
print('import_trunks' in request.session) #Result is False
print('import_connections' in request.session) #Result is False
if 'import_trunks' in request.session and 'import_connections' in request.session :
print(request.session['import_trunks'])
#Do some stuff with what's inside the session
del request.session['import_trunks']
del request.session['import_connections']
А вот мои настройки:
INSTALLED_APPS = [
'confWeb.apps.ConfwebConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies"
Проблема в том, что он правильно хранится в сессии, прежде чем пытаться открыть вторую точку зрения, но когда мы входим второй вид, это как если бы сессия была очищено.
Я также понимаю, что, возможно, я не должен использовать request.session
для этого, поскольку я пропускаю довольно большие объекты JSON. Может быть, это проблема? Сессия не может быть такой большой? Если лучше использовать что-то еще, можете ли вы мне посоветовать?
Какая у вас настройка 'SESSION_ENGINE'? У вас есть 'django.contrib.sessions' в' INSTALLED_APPS'? –
Я отредактировал вопрос с параметрами, которые вы просили. – Licia
Большие объекты JSON могут быть проблемой, если вы храните сеансы в файлах cookie. Я думаю, что файлы cookie могут иметь длину до 4 КБ. –