Май 12, 2008 в 00:54 |
django
python
snippets
web
- Автор Александр Кошелев |
|
Давно уже сталкиваюсь с одним неудобством в повседневной работе с джангой.
Например у нас есть моделька:
class Entry( models.Model ):
title = models.CharField( max_length = 150 )
type = <...>
И каким полем выразить тип (да, знаю, что имя конфликтует со встроенным, но тут это не принципиально)? "Ха!" - скажут некоторые. Да просто взять IntegerField и сделать типы целыми числами от 0 до сколько надо. Легко!
TYPES = ( ( 0, _( "inactive" ) ),
( 1, _( "active" ) ) )
class Entry( models.Model ):
title = models.CharField( max_length = 150 )
type = models.PositiveIntegerField( choices = TYPES )
Казалось бы, проблема решена. И этим можно пользоваться. Но, тут сразу начинаются неудобства.
Для того чтобы код не превращался в склад "магических чисел" надо добавить соответствующие константы, которые описывают эти два типа.
INACTIVE = 0
ACTIVE = 1
# или даже
INACTIVE, ACTIVE = range( 0, 2 )
потом можно пойти ещё дальше и выразить choices через них, чтобы было меньше дублирования
TYPES = ( ( INACTIVE, _( "inactive" ) ),
( ACTIVE, _( "active" ) ) )
Теперь можно вполне себе удобно использовать это хозяйство. И выборки делать и прочие проверки ...
Апрель 27, 2008 в 08:01 |
db
django
orm
python
web
- Автор Александр Кошелев |
|
Наконец-то! Уверен, что я не один воскликнул это слово, когда узнал что долгожданная queryset-refactor ветка влилась в транк и теперь ORM в джанго стал ещё лучше и удобней! Этого момента ждали долга, поскольку это один из самых больших шагов по направлению к 1.0 версии джанги. Итак, что же мы получили.
Начну с основных изменения уже имеющегося функционала:
Указание сортировки по при-join-ненным моделям теперь стало более логичным и совпадает с фильтрами lookup'ов. Просто пример:
Order.objects.all().order_by( "product__price" )
Обновлена реализация __iter__ метода queryset'a. И не грузит все строки результат в память сразу.
Особенно меня радует: сделана нормальная обработка None значения в lookup'ах. Т.е. если раньше приходилось писать писать воркэраунды для случая когда селект осуществлялся по NULL значениям, например так:
if value is None:
queryset = queryset.filter( field__isnull = True )
else:
queryset = queryset.filter( field = value )
То теперь эта проверка лишняя не нужна. Ура!)
Есть ещё некоторое количество изменений, но они на низко уровне и на прямую ...
Апрель 20, 2008 в 02:35 |
django
python
subversion
web
- Автор Александр Кошелев |
|
Со временем роста количества проектов, понимаешь как дорого строит их поддержка. Когда проектов мало, то что-то править и дописывать не трудно и почти не раздражает. А вот когда количество проектов переваливает за некоторое критическое число, то становится мучительно сложно что-то менять и обновлять. А особенно, когда эти проекты зависят от некоторой единой базы кода, т.е. грубо говоря от одних библиотек.
Я всегда использую транк джанги, поскольку релизится она не часто, а для примера можете сравнить насколько отличается текущая её версия от последнего релиза. Ага, как-будто вообще разные фреймворки в некоторых местах:)
Ну транк, так транк. Все хорошо, проект пишется какое-то время со свежим транком. Потом к счастью проект релизится и выходит в продакшн. И вот через некоторое время нужно либо что-то дописать, либо что-то исправить. Ну а почему бы и джангу не обновить под шумок и ещё несколько очередных плюшек новых использовать. Не проблема, обновили, код подправили и живем дальше. Но!
Обычно я устанавливаю джангу в общедоступный PYTHONPATH, например ...
Апрель 17, 2008 в 14:50 |
mobile
web
личное
- Автор Александр Кошелев |
|
Этим вопросом я задаюсь очень часто последнее время. И чаще всего получаю на него ответ - "нету". Да, многие сайты, которые я регулярно посещаю, не имеют версию для мобильных устройств. Это очень разочаровывает.

Недавно я обзавелся новым мобильным телефоном. Это моё первое устройство, которое имеет GPRS/EDGE. И я сразу же стал активным потребителем беспроводного трафика.
По первости очень порадовал Google который имеет упрощенные версии своих сервисов. От почты до работы с документами. Для почты, карт и поиска есть даже J2ME приложения, которые делают ещё более удобным работу с сервисами.
Ещё Яндекс имеет некоторое количество сервисов заточенных под мобильные устройства. Это тоже радует.
Но вот другие сайты такой заботой к клиентам не отличаются. Увы.
В эти дни я также пожалел, что и мой блог тоже не адаптирован к подобному использования. Надо будет этот вопрос продумать.
А вообще впечатление моё от интернета в мобильном телефоне - супер! Да, я в восторге. Теперь я могу быть на связи через IM клиент почти круглые сутки ...
Апрель 15, 2008 в 09:54 |
django
exception #07
python
web
личное
фриланс
- Автор Александр Кошелев |
|
Данный материал не является текстовой перепечаткой моего доклада на Exception #07. Это повторное изложение мыслей на заданную тему. Полная версия слайдов в формате odp - 21кб
Я имею некоторый опыт во фриланс-веб разработке. И большая его часть связана с питоном и джангой. Это сайты средней сложности, в основном контент ориентированные. По прошествии времени, я могу смело утверждать что Python и Django - это отличная связка для тех, кто хочет чего-то добиться в этой сфере быстро и с удовольствием:)

В момент, когда я искал новую платформу/технологию для быстрого и удобного создания сайтов, то мой взор был почти сразу обращен в сторону питона. Хоть, к тому времени с питоном я уже был знаком, но на очень низком уровне. И всё норовил перенести в него парадигмы используемые мною до этого в С++. Как вы понимаете, это ни к чему хорошему не приводило. Но постепенно благодаря всё более плотному знакомству с джангой, изучению её внутренностей и вообще изучению потоночьего кода, я стал исправляться. И чем ...