Получение предыдущей версии объекта в методе save

В Django довольно часто возникает необходимость получения предыдущей версии инстанса модели при сохранении.

В самом простом и очевидном варианте это делается так:

class MyModel(models.Model):
    def save(self, *args, **kwargs):
        old_instance = None
        if self.pk
            old_instance = MyModel.objects.get(pk=self.pk)

Всё бы хорошо, но иногда бывает так, что pk указан, а в базе такого объекта нет. Это ...

Полная версия »

Очередная солянка "секретов и советов", на этот раз про Django и Python

Как посмотреть, сколько места занимают таблицы в базе данных MySQL?

SELECT table_name, engine, ROUND(data_length/1024/1024,2) AS total_size_mb, table_rows FROM information_schema.tables WHERE table_schema='DATABASE_NAME';

где DATABASE_NAME - название нужной базы.

Как посчитать общий размер файлов в Amazon S3 на python?

import boto3

session = boto3.Session(aws_access_key_id='',
                        aws_secret_access_key='')
s3 = session.resource('s3')
for bucket in s3.buckets ...
Полная версия »

Как бороться со спамом в блогах без капчи

Чёрные списки, проверка рефереров, поиск тегов <a> и даже запрет китайских иероглифов... Как оказалось, это всё бесполезно. Нет, оно работает, режет кучу спама и позволяет удалять по 10-20 сообщений в день вместо тысячи, но реально помогает только одно:

if ($http_user_agent ~ 'MSIE 6.0') {
    return 403;
}

т.е. запрет посещения блога для Internet Explorer 6 на уровне nginx, который в моём ...

Полная версия »

Как написать простой блог на Django

Совершенно элементарно. Изучаете html, css, js, python, django, потом пишете :)

А можно просто скопировать исходники моего блога и пользоваться. Но лучше всё-таки не просто пользоваться, а взяв их за основу написать что-то своё. Хотя, сперва не лишним будет ознакомиться со статьёй на Хабре, где подробно описываются самые начала.

Функциональность блога (точнее её отсутствие) вы можете наблюдать самостоятельно. Некоторые возможности скрыты ...

Полная версия »

Подсветка синтаксиса для Geany

Представляю вашему вниманию тему Next Day (основана на цветах темы Tomorrow), которую я использую в Geany. Вариант этой же темы для PyCharm.

Для установки нужно взять из моего репозитория с конфигами каталоги colorschemes и filedefs, скопировать их в ~/.config/geany/ и выбрать тему Next Day в настойках Geany (Вид - Редактор - Цветовые схемы).

Python

Python

JavaScript

JavaScript

HTML

HTML

CSS

CSS

Полная версия »