Django+FastCGI+nginx
Если django (да пожалуй и другие фреймфворки и не только на питоне) работает через fastcgi и проксируется nginx’ом по https, то последнему нужно добавить параметр:
fastcgi_param HTTPS on;
Если django (да пожалуй и другие фреймфворки и не только на питоне) работает через fastcgi и проксируется nginx’ом по https, то последнему нужно добавить параметр:
fastcgi_param HTTPS on;
И так, мы хотим, чтобы пользовал клацнув на кнопочку “Экспорт в Excel” получил это документ и был доволен. Что может проще скажете вы – взять положить файл в каталог и тупо его HTTP сервером отдавать. Но не все так просто в случае если вам необходимо, чтобы этот файл генерировался динамически (из-за меняющихся в нем данных), например django, на котором крутиться сайт.
Насколько мне удалось узнать, в мире существует один адеватный генератор Excel файлов – xlwt, который можно юзать на Unix системах. Это клон pyExcelator’a, но лучше подходит для django и сохранения не в файл. С документацией у него беда, но парочку линков все же нашел: обзор и пример.
Кроме того, примеры есть и в тарболе с pyexcelator’ом или в самом xlwt.
И так создаем во views.py приложения django функцию, которая будет возрвращать xls файл:
Но это еще не все. Далее нам нужно этот документ каким-то образом передать пользователю. Отсюда вытекают 2 проблемы или вопроса:
Начну пожалуй со второй проблемы, ибо она решается довольно просто. Если залезть в RFC 2183, то можно узнать про интересное поле в HTTP заголовке – Content-Disposition, которое то и позволит присвоить имя файлу через присвоение ему типа attachment с параметром filename. Для Django это будет выглядеть так:
И так, для решения первой проблемы (в случае если используется pyExcelator) я порылся в коде pyExcelator’a и выкопал следующее. Оказывается метод save() класса Workbook делает следующее:
CompoundDoc.XlsDoc() собственно и представляет собой обертку над бинарными данными, который сгенерировал Workbook (их получаем с помощью self.get_biff_data()). Как раз после save() класса CompoundDoc.XlsDoc() и получаем конечный Excel документ. Но смотрим далее в метод save() этого XlsDoc‘a:
Как видно, опять, тут идет работа с файлов. Слава богу это конечный пункт сохранения файла, поэтому смело овверайдим эти два класса для работы с Django:
Вставляем этот код в views.py нашего приложения и в коде нашей функции export_xls() после создания и генерации данных пишем:
Здесь wb – это WoorBook из первого листинга (но это не тот Workbook, что из pyExcelator’a, а наш, который мы переопределили).
Вот собственно и все. Небольшая компиляция собранных с краев интернета кусочков. Может и есть какой-то более прямой способ.
UPD В случае использования xlwt все проще. Юзаем:
Posted on 8 April '08 by spoof, under comp, devel, заметки. No Comments.
Просто не мог написать о сегодняшнем дне (или уже вчерашнем?). Хоть и началось воскресенье у меня в 16 часов, но это не помешало мне переделать довольно много дел, которые были отложены в «долгий ящик» когда-то давно. Полезно иногда так их делать, особенно если они связаны с разбором старого барахла. В связи с тем, что я закончил университет, мне некоторые вещи больше попросту не нужны. И если раньше, я какие-то материалы, книжечки или тетрадочки с записями хранил – авось пригодится, то теперь мне они по просту не нужны. Да и кроме университетских вещей, оказывается, скопилось много другого хлама. Я тот еще Коробочка (см. «Мертвые души» Н.В. Гоголя).
Естественно, как и у всех, находя давно забытые вещи среди этого хлама, периодически возникали различные воспоминания, связанные с той или иной вещью. В общем, получился день для всевозможных ностальгий по прошлому. Тут и чек от сетевухи, которая была куплена для подключения к своему ISP, которым я пользуюсь по сей день. Еще всякие рисунки на полях лекций, и даже инструкция от модема, купленного где-то в году 99-ом
Журнальчики компьютерные за 97-98 год
Нашел только парочку – наверно оставил для памяти как раз. Выбросил – неактуально уже. Также были найдены книжки по DOS’у уж даже не знаю за какой год. Всякие открытки с поздравлениями с 23-м февраля от девочек (самая старая за 6 класс школы) и с днем рождения. Храню. Писать можно об этом очень долго, но не буду. Наверно каждый с этим сталкивался и каждому знакомо. В итоге только из моего стола и близлежащих полок было собрано 5! пакетов мусора. Оставил реально нужные вещи только, ну и плюс то, что напоминает мне о прошлом – чтобы не забыть
Кроме того, поправил конфиг кваки, который уже может быть полгода поправить не мог – лениво было. Еще удалил в конец задолбавшую меня поделку под названием Steermouse, которая ругаясь на то, что она не зарегистрирована, вылетает в тот момент когда я играю в кваку. А это для меня критично, ибо настройки чувствительности курсора слетают тоже. Поставил logitech control center назад, только версии 2.3.1, а не новее. С последними перестрают работать notification growl’a.
Почистил хард своего домашнего компа – теперь гигов на 10 больше стало свободно
Но это еще не конец, я думаю. На ноуте тоже всякую фигню почистил.
Дохачил memcached, чтобы оно не использовало expiration time и не удаляло устаревшие данные с какой-то переодичностью. Надо бы еще поменять поведение команды flush_all, дабы оно служило для удаления всех данных из сервера, а не только тех, кто expire’нулся.
Вроде всё.
Вроде выходные прошли довольно плодотворно как в работе, так и в отдыхе. В субботу был в клубе О2ТВ, куда ходил на Demolition Man’а. Честно говоря, ждал от него большего. Да и, в целом, вечеринки (ragga jungle’овские) мне несколько наскучили. Хожу туда, чтобы послушать dancehall’чик и пообщаться со знакомыми, да и просто сменить обстановку. Музыка в общем и целом не впечатляет – одно и тоже потому что играет от вечеринки к вечеринке или то, что я слышал уже кучу раз, наверно.
И так! Я сделал это – я купил себе таки макбук. Радости нет предела.
Вот он родимый:

Если вы программист, или какое-то отношение к ним имеете, то вы наверно встречали индусов, а точнее “индусов”. А именно тех еб^Wнехороших людей, которые пишут совершенно отвратный код. Так о чем это я. Короче, устал я от ковыряния кривоработающих компонентов своих проектов – будь это что-то рабочее или “быдлокодерское” (фрилансерское). А устал именно от того, что эти компоненты написаны тяп ляп и постоянно убиваешь кучу времени на то, что фиксишь баги в этих компонентах или адаптируешь их под себя. Я бы сказал немеряно времени, бывает, что сильно больше, чем реализация чего-то непосредственно касамеого самого проекта.
(more…)
Чтобы каждый раз svn co не спрашивал файл сертификата при подключении к репозитарию по https в ~./subversion/servers достаточно добавить :
[examplehost]
ssl-client-cert-file = /path/to/my/cert.p12
ssl-client-cert-password = somepassword
Взято отсюда
Finally, поборол свою лень и занялся сайтами, в том числе и своим блогом. К своему блогу прикрутил categories cloud widget (уж очень нравицца) и плагин del.isio.us, который стягивает последние ссылки с моего аккаунта на одноименном сайте. Widget…слово то какое. Короче это новая фича, которая идет в 2.2 и была доступна в качестве плагина для wordress’a версий ниже. Если у Modx это называется snippet, у Joomla – модуль/компонент, то тут это те же яйца, только вид сбоку. Хотя это грамотное решение проблемы постоянной правки шаблонов/templates дизайна – тупо перетащил нужный widget в понравившееся место на sidebar’e (жаль, что только на sidebar’e) и юзаешь на здоровье и никакой правки шаблона.
Вот бы таким же образом сделали openid “авторизацию”, чтобы возможно было комментировать. Сейчас же опять надо менять это в шаблоне. Шаблон, кстати тоже поменял, но это временно, ибо он мне не нравится, но лучше ничего не нашел.
Продолжил работу над сайтом Ragga-Jungle.Ru. Первоначально задумывалось сделать это всё на движке Joomla, но оказалось, что это настолько запутанная CMS, что возникает вопрос : что курили разработчики этой cms, когда ее создавали? Я знаю, что корни идут от Mambo, но тем не менее.
Короче, вернулся на Modx, который показался мне наиболее удобным и понятным для создания того, что требуется. Переход правда связан с потерей интеграции всех модулей друг с другом. Надо пилить руками – но хотя бы понятно, что куда и зачем. Modx однозначно рулит! За 2 дня я сделал больше, чем за неделю (если быть точным за два вечера против пяти вечеров).
И еще.. Cи++ постепенно съедает мой моск и время
upd: Таки пришлось мне править шаблон руками. Ссылка home была битая и вела на текущую страницу всё время. В коде надо было заменить $url = get_option(’wpurl’) на $url = get_bloginfo(’url’); Видимо это wordpress 2.x specific “фича”.
Всё. Наконец-то сдал сессию
последнюю в жизни сессию в МЭИ. Теперь отдыхаю и работаю и нет такого огромного пожирателя времени как универ. Планов есс-но куча. И самое радостное, что планы эти касаются больше отдыха и увлечений (кстати, сказать, работа в спайлоге это увлечение
)
Posted on 7 July '07 by spoof, under comp, life, spylog. No Comments.
Вухухуху, погода с каждым днем всё лучше и лучше. Днем работа, вечером гулять и наоборот. И кто, блять, придумал сон?
Куча работы, просто куча. Ладно бы просто была работа, так ведь и желание работать есть.
Единственное, универ парит моск жестоко. Но ничего. Еше год и всё. Хотя уже меньше.
Copyright 2010 by Spoof's blog.
Design by My Web Caffe