Comments 7
Добавлю от себя как я клею vue и django (в принципе тут может быть любой фреймворк). Просто в папке с vue приложением создаю файлик vue.config.js и в нем прописываю проксирование запросов в django. Файлик выглядит примерно так
// vue.config.js
/**
* @type {import('@vue/cli-service').ProjectOptions}
*/
module.exports = {
devServer: {
proxy: {
"/": {
target: "http://localhost:8000"
}
},
}
}
И вуаля, вы запускаете дев-сервер монги и дев-сервер джанги в разных коснолях, и они прекрасно между собой общаются.
Фильтр safe отключает экранирование символов, чтобы JSON остался валидным.
Фильтр safe
действительно отключает экранирование, но использовать его в таких целях не стоит, потому что это верный путь к xss: ?a=</script><script>alert(1)</script>
Также совершенно непонятно как будет работать 'post_data': request.body
, потому что request.body
это bytes
, соответственно рендерится он будет как post: b''
.
Также django по-умолчанию требует csrf токен для non-safe методов, к которым в том числе относится post, однако я не нашел никакого упоминания о нем в статье. Вы его просто отключаете?
Спасибо! С safe действительно так, но если мы получаем post от доверенного источника (чисто токены), то так вполне можно сделать. Отмечу посте, что значения форм (например) так передавать не стоит.
С bytes забыл со всеми этими обвязками в виде drf. Можно просто request.body.encode('utf-8')
С csrf действительно забыл добавить @csrf_excemp- поправлю это
но если мы получаем post от доверенного источника (чисто токены), то так вполне можно сделать
Нет. XSS делать никогда не стоит. safe
не предназначен для рендеринга json. Со стороны django было большой глупостью назвать safe
фильтр, который делает крайне опасные вещи.
Кстати, как вы контролируете, что получаете post от доверенного источника?
Как подружить django и vue.js