Пишем простые проекты. Проект #1. Часть #1

Нудное введение:

Замечено, что новичкам трудно перейти от теории к практике - заставить себя писать, а не только читать. Чтобы помочь мы постоянно публикуем различный материал и указываем как применить эти знания на практике.

В этот раз решили написать 2 небольших проекта:

  • Первый - страница со статистикой отжимания. Будет показано, как с помощью flask + google chart's сделать проект для сохранения и ...
more ...

Пишем web-проекты: исправляем битый HTML с помощью Tidy

При парсинге возникают совсем странные ошибки - одна из них - не валидный HTML. Т.е. с ошибками. Верстальщик забыл закрыть таблицу или body. Еще бывает что вставляют HTML из Word, а там тааккккооооой код.

Чтобы очистить HTML от мусора можно применять инструмент Tidy.

Данный инструмент позволяет исправить неверный HTML (добавит закрывающие теги, добавит недостающие теги), почистить форматирование (отступы, например).

Скачать этот ...

more ...

Пишем web-проекты: Гексагональная архитектура в приложениях Django

Видео со свежего Moscow Python митапа.

Как не превратить свой проект в груду урлов? Как не потерять расширяемость с ростом кодовой базы? Как писать поддерживаемый код? Об этих проблемах и их возможных решениях на примере Django расскажет и покажет Малышев Артем.

more ...

Пишем web-проекты: django сигналы

Хочется поделиться ссылкой на статью - https://zxmd.wordpress.com/2013/05/23/django_signals/

Что такое сигнал в Django Framework ?

На бытовом уровне это система (диспетчер сигналов) которая обрабатывает некоторые виды событий которые генерирует система. По сути система сигналов разделяется на два компонента:

sender — компонент посылающий сигнал; receiver — компонент отвечающий за обработку сигнала. ...

more ...

Пишем web-проекты: django-braces - набор миксин на все случаи жизни

При разработке сколько-либо сложного django-проекта необходимо из раза в раз писать одинаковые куски кода - разграничивать доступ к контенту.

Например. чтобы только администратор в меню сайта видел ссылку на "админку", или чтобы модератор имел какую-то внутреннюю страницу, которая не доступна простому пользователю.

В случае с уровнем доступа, с авторизацией и прочими типовыми задачами есть набор готовых миксин - django-braces. Django-braces позволяет в ...

more ...

Пишем web-проекты: jinja2 - шаблонизатор

Jinja — это шаблонизатор для языка программирования Python. Он подобен шаблонизатору Django, но предоставляет Python-ические выражения, обеспечивая исполнение шаблонов в песочнице. Это текстовый язык шаблонов и, таким образом, может быть использован для создания какой-либо разметки, а также исходного кода.

Шаблонизатор Jinja позволяет настраивать теги, фильтры, тесты и глобальные переменные. Также, в отличие от шаблонизатора Django, Jinja позволяет конструктору шаблонов вызывать функции ...

more ...

Пишем web-проекты: Использование gevent для эмуляции высокой нагрузки

Обязательное действие перед выпуском более-менее серьёзного проекта — тестирование производительности. На высоконагруженных проектах нужно точно знать, какую нагрузку они могут выдержать, причём заранее. Следовательно, нужен способ эмуляции высокой конкурентности, желательно чтобы в теории он позволял полностью загрузить канал траффиком. К тому же, неплохо было бы, чтобы для этого не нужно было использовать несколько десятков серверов. В докладе будет рассказано об опыте ...

more ...


Пишем web-проекты: полиморфные связи или Foreign Key на две Django модели

Представим ситуацию. Есть модель Текст (заголовок, тело, теги) и модели Новость, Продукт, Реклама, которые имеют свои уникальные параметры. Необходимо связать Текст и все остальные - вполне логичное желание.

Как можно поступить:

  • Добавить Foreign Key в Текст (т.е. будет N=3 Foreign Key полей)
  • Сделать отдельные модели для связи - будет 3 таблицы для связки. (вручную их сделаем)
  • Сделать 2 поля, одно ...
more ...

Пишем web-проекты: Django Admin Actions

Интерфейс администратора Django достается разработчику "даром" - прописываешь немного срочек и готово. Появляется UI где можно изменять объекты моделей - просто так нам предоставляют GRUD возможности.

Но что если нам надо сделать какие-то дополнительные возможности? Для примера такие действия есть в Python Дайджест:

Python Дайджест

Такие возможности реализуются с помощью Django admin actions. Для примера так:

class ItemModeratorAdmin(admin.ModelAdmin):
    actions = [
        '_action_make_moderated',
    ]
    def _action_set_queue ...
more ...