в моем приложении django Я сохраняю строки html в db, которые затем будут отображаться на домашних страницах пользователей как «сообщения». Некоторые из этих сообщений содержат формы, но не записываются на языке шаблонов, я не могу вставить токен csrf (таким образом, нарушая приложение).Как я могу вставить django csrf token прямо в HTML?
Есть ли способ вставить этот токен непосредственно из файлов python, которые я редактирую? Я ищу что-то в соответствии с:
csrf_token = django.csrf.generate()
message = "press the button please: <form><input type='hidden' name='csrf_token' value='%s'><input type='submit' value='press here'></form>" % (csrf_token)
любое другое решение, которое будет работать в аналогичном сценарии, было бы замечательно. Благодаря
Edit: На самом деле это не будет работать, потому что маркер отличается для каждой сессии, поэтому хранить его в БД не очень полезно. есть ли способ динамически загружать токен в представлении?
Что вы имеете в виду под "динамически загрузить маркер в поле зрения? –
форма сохраняется в виде строки в базе данных, поэтому, если я храню токен там, он будет недействительным, как только он будет загружен в новый сеанс. Если бы можно было загрузить новый токен изнутри представления, я мог бы перехватить html по мере его рендеринга, вставить соответствующий токен и отобразить рабочую форму. Главное здесь, что я не прохожу через шаблон, чтобы вставить токен. Это делает его более ясным? – ergelo
Не можете ли вы просто использовать декоратор csrf_protect? – sureshvv