Как стать автором
Обновить

Комментарии 7

НЛО прилетело и опубликовало эту надпись здесь

Спасибо большое за комент! Это моя первый пост и я рад критике)
Поправлю его

UPD: вообще, предполагалось, что читатель уже знает что такое Vue и Django и хотябы умеет их ставить (с сопутствующими node, vue-cli, python, django)

Добавлю от себя как я клею 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 от доверенного источника?

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.