Мои Django хелперы

категория: Django
Решил создать топик куда буду сливать методы, которые часто повторяются и чтоб лишний раз их не искать. Это не будет только мой код, местами из кода django и тп. В общем, полезные скриптики которые нужны для часто встречающихся задач в моих буднях разработчика: Формирование строки, сообщения из отправленной формы, хорошо подходит для отправки уведомления в личный кабинет пользователя или на email:
def generate_message(form):
    """
    Generate message from form data, containing 'label: value' pairs
    :param form: class ModelForm
    :return: str
    """
    return '\n'.join(['%s: %s' % tuple([form.fields[name].label, \
        form.cleaned_data[name]]) for name in form.fields])
Старая добрая пагинация:
def paginate(request, objects, number):
    """
    Paginate objects by number per page
    :param request: request
    :param objects: queryset
    :param number: int
    :return: queryset
    """
    paginator = Paginator(objects, number)
    #
    page = request.GET.get('page')
    try:
        objects = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        objects = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        objects = paginator.page(paginator.num_pages)
    #
    return objects
Добавляем превью изображения с помощью sorl.thumbnail:
def get_small_image(self):
   return get_thumbnail(self.img, '200x200', crop='center')
Выбираем правильный падеж в зависимости от числа:
pytils.numeral.get_plural(len(results), 
                          u'результат, результата, результатов',
                          absence=u"результатов нет")
Генерация случайного пароля:
def get_random_password():
    return User.objects.make_random_password()
...


blog comments powered by Disqus