В настоящее время я получаю запрос объект в моей модели Django используя следующий код:Как создать глобальные переменные, доступные в моделях через промежуточное ПО в Django?
request_user = None
for frame_record in inspect.stack():
if frame_record[3] == 'get_response':
request_user = frame_record[0].f_locals['request'].user
Хотя это работает, я хотел бы знать, как выставить объект запроса в ПО промежуточного слоя, который может быть легко доступ непосредственно в моих моделях?
Я знаю, как создать промежуточное программное обеспечение. Мой вопрос - это то, что «может быть» установлено в промежуточном программном обеспечении, к которому имеет доступ модель? Я могу видеть только запрос, к которому нельзя получить доступ непосредственно в модели. У Django есть глобальная переменная в сеансе или что-то в этом роде?
Вы почти наверняка не будете делать такую интроспекцию кода, которую вы описываете выше. Почему вы не можете просто передать пользователя в модельный метод в качестве аргумента? Или поместить идентификатор пользователя в переменные сеанса? –
Мне нужен объект запроса. Мне нужно знать, кто делает запрос и некоторую информацию META из запроса. – Prometheus
Почему вы не передаете объект 'request' вашей модели? Я не думаю, что установка чего-то в промежуточном программном обеспечении - правильный подход. –