Рубрика: python

Загрузка файла в Django REST Framework

Учимся загружать файл через стандартное API Djan­go REST Frame­work. Загруженный файл приходит в request.FILES, класс Upload­ed­File. Для HTML-формы должно быть установлено enctype=“multipart/form-data” и она должна заливаться через POST. Идут годы, а формы в HTML не меняются… В Djan­go Mod­el есть специальный поля для хранения загруженных файлов — File­Field и Image­Field. Они хранят, разумеется, не в базе, а на…

Прочитать статью целиком

source для virtualenv под windows

Иногда бывает нужно сделать свой, небольшой локальный Python-мирок. Например, если мы пишем на djan­go и не хотим ставить пакеты глобально. Это очень поможет, когда намного позже мы будем собирать инсталлятор к проекту. Мы сможем одной командой pip узнать, какие пакеты нужны. Как это делается сейчас Python 3 научился создавать vir­tualenv штатными средствами. Вот так: python3…

Прочитать статью целиком

Как C и Perl захватили планету

Почему C и Perl стали стандартами в своих областях и до сих пор на коне? Дело, конечно, не только в синтаксисе и парадигме. И даже не в простоте. C, конечно, прост, это по-человечески записанный кроссплатформенный ассемблер. Но Perl совсем не прост, это многослойная обёртка вокруг парсера регулярных выражений. Весь секрет — в нечестных преимуществах. Компиляторы…

Прочитать статью целиком

SHA256 в Python

SHA256 в Python бывает и стандартный (из hash­lib), и сторонний (из PyCryp­to). Интересно, что при неосторожном использовании они дают разные результаты. Во-первых, SHA256.new() из PyCryp­to сразу после создания имеет digest. Это SHA от пустой строки — широко известное 0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855. Во-вторых, каждый update накладывается в нём на предыдущий, поэтому если digest используется на следующей итерации, то SHA256.new()…

Прочитать статью целиком

Д. Босуэлл, Т. Фаучер — Читаемый код, или программирование как искусство

Небольшая книжка, в которой много полезных мелочей. Например, более точные варианты названий для типичных функций: send — deliv­er; dis­patch; announce; dis­trib­ute; route find — search; extract; locate;recover start — launch; cre­ate; begin; open make — cre­ate; set­up; build; gen­er­ate; com­pose; new Именованные интераторы для циклов (ui лучше, чем просто i). Дополнительные постфиксы — size_mb, html_utf…

Прочитать статью целиком

Python: размер по числу байт

def get_bytes_size_units(num): “”” Get file size with prop­er units of mea­sure­ment. “”” range_titles = [“b”, “kB”, “Mb”, “Gb”, “Tb”, “PB”, “EB”, “ZP”, “YB”] range_titles_len = len(range_titles) i = 1 prev_value = 0 new_value = num is_iteration = True while is_iteration: prev_value = new_value new_value = num » ((i « 1) * 5) i += 1…

Прочитать статью целиком

WordCount в Sublime

Sub­lime чудесен. Можно сказать, что проблема отсутствия под lin­ux-ом Notepad++ успешно решена. Правда был вопрос – насколько можно его использовать для написания всяких текстов. А чтобы в программе писали тексты, она должна уметь подсчитывать символы. Соответствующий плагин нашёлся сразу, но он не умел посчитывать количество символов. Решил допилить, а заодно разобраться, что у этих плагинчиков…

Прочитать статью целиком