12 сентября 2009. Потенциальный вклад
Создавая очередой проект на django, обратил внимание, что у меня есть несколько написанных мною модулей и отдельных классов, которые я реюзаю. Как закончу с текущим проектом, сделаю над собой усилие, организую нормально пакеты и, возможно, выложу для всеобщего пользования свой “мини-фреймворк” для приятного времепровождения с джангой =)
Комментировать [1] |
django,
python |
Заметил за собой, что стал часто пользоваться декораторами в Python. Набросал шаблон для создания декоратора в PyDev. Берите, если нужно:
Комментировать [2] |
python |
Для тех кто не знает, скажу, что в питоне есть статичные методы, так что можно не извращатьсяи не передавать в качестве аргумента self новые экземпляры класса :) Чтобы сделать статический метод, нужно воспользоваться декоратором @staticmethod:
Комментировать |
python |
Всегда, всегда во всех стрингах с русскими буквами ставьте префикс “u” для того, чтобы конвертировать его в юникод. Даже если Вам кажется, что ошибка не может произрастать из этого, все равно проставьте. У меня не сохранялись объекты через inline, прописанный к стандартному django.contrib.auth.User – после отсылки данных POST’ом вылезала ошибка UnicodeDecodeError от обработчика Django. Причем, если попытка сохранения велась не через этот inline, то все прекрасно сохранялось. Я уже хотел переопределить методы save() для всех моделей и вставить туда принудительную конвертацию в юникод, но отчего-то взял, да и поставил во всех стрингах префикс “u”: <…> И произошло чудо. Объекты стали сохранятся из инлайнов! P.S. С наступающим 2009-м годом! Желаю свершения всех желаний и минимального времяпровождения в дебаге ;)
Комментировать |
django,
python |
По долгу службы столкнулся с интересным явлением в Python (речь идет о версии 2.5, но подобное поведение сохраняют и младшие версии). В моем классе была явная ошибка и экземпляры класса как-то странно инициализировались. Я довольно много времени провел за дебаггингом, пока однозначно не решил, что виной всему ошибка в интерпретаторе. И был, как оказалось, по-своему прав…
Комментировать |
python,
rtfm |
Copyright © Alexey "Datagreed" Strelkov, 2008 | Designed by Kevin Potts | Мое портфолио 12 июня 2009. Шаблон декоратора для Eclipse
def ${name}(func):
'''
${description}
'''
if not hasattr(func, '__call__'):
raise TypeError ('The argument should be a callable')
def wrapper(request, *args, **kwargs):
${pass}
return func(request, *args, **kwargs)
return wrapper
12 мая 2009. Статические методы в Python
class SomeClass(object):
@staticmethod
def someStaticMethod():
return "something"
Также доступны для создания классовые методы через декоратор @classmethod. Классовому методу передается ссылка на класс:class SomeClass(object):
CONSTANT = u"какая-то юникодная константа"
@classmethod
def someClassMethod(cls):
return cls.CONSTANT
Оба декоратора доступны в стандартном пространстве имен – ничего импортировать не нужно.31 декабря 2008. UnicodeDecodeError в Django
hide = models.BooleanField(u“Спрятан”,default = False)
<…>
Мистика. 7 октября 2008. Питонья подножка: list в качестве аргумента по умолчанию
Перепечатка материалов сайта без разрешения автора (Алексей Стрелков) запрещена.