Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Начинаем Django приложение правильно

Начинаем Django приложение правильно

Никита Соболев (Wemake.Services) @ Moscow Python Meetup 54
"В современном мире есть куча нюансов, которые нужно учесть при старте вашего приложения: конфигурация, деплой, тесты, CI, удобство разработки. Расскажу про Bleeding Edge технологии, основная цель которых сделать ваш проект безопасным и удобным".
Видео: http://www.moscowpython.ru/meetup/54/starting-django-app/

Moscow Python Meetup

March 22, 2018
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Никита Соболев
    github.com/sobolevn

    View full-size slide

  2. Repeatable Software
    Development Process
    https://wemake.services/meta/

    View full-size slide

  3. • Все проекты должны быть одинаковыми по
    структуре и правилам
    • Приемка работы - должна быть одинаково сурова
    для всех проектов
    • Проекты не должны застывать в legacy

    View full-size slide

  4. bit.ly/wms-django

    View full-size slide

  5. Документация
    docs/
    wemake-django-template.rtfd.io

    View full-size slide

  6. Зависимости
    Pipfile, Pipfile.lock

    View full-size slide

  7. We love our build as we
    love our processes
    Repeatable!

    View full-size slide

  8. pipenv
    • Pipfile / Pipfile.lock уже сегодня
    • Deterministic builds
    • Управляет virtualenv
    • Проверяет безопасность зависимостей

    View full-size slide

  9. py.test
    tests/, setup.cfg

    View full-size slide

  10. py.test plugins
    • pytest-django
    • pytest-cov
    • pytest-xdist
    • pytest-isort
    • pytest-flake8

    View full-size slide

  11. Линтинг
    Pipfile, setup.cfg

    View full-size slide

  12. Почему я люблю строгий
    линтинг?
    • Он помогает при Code Review
    • Он делает код красивым и читаемым
    • Он помогает искать ошибки

    View full-size slide

  13. flake8 vs pylint

    View full-size slide

  14. – Александр Шорин
    «Можно pylint для отчетов использовать».

    View full-size slide

  15. mypy
    setup.cfg

    View full-size slide

  16. ~/Desktop
    » mypy test_mypy.py
    test_mypy.py:2: error:
    Incompatible return value type (got "List[str]", expected "str")
    test_mypy.py:5: error:
    Argument 1 to "save_me_from_errors" has incompatible type "None"; expected "str"

    View full-size slide

  17. Developer Happiness
    .pre-commit.yaml, docker-compose.yml

    View full-size slide

  18. DevOps
    Happiness
    docker-compose.yml, docker/docker-compose.prod.yml,
    .gitlab-ci.yml

    View full-size slide

  19. Team Lead
    Happiness
    docker/ci.sh

    View full-size slide

  20. Установка

    View full-size slide

  21. ~/Desktop
    » pip install cookiecutter
    ~/Desktop
    » cookiecutter gh:wemake-services/wemake-django-template
    ~/Desktop/test_project
    » docker-compose run --rm web python manage.py migrate
    ~/Desktop/test_project
    » docker-compose up

    View full-size slide

  22. Обновление

    View full-size slide

  23. Notable mentions
    .editorconfig
    .idea
    .python-version
    doc8
    @dependabot

    View full-size slide

  24. Для чего не подходит?

    View full-size slide

  25. – Александр Зеленяк
    «Вся тусовка на Гитхабе».

    View full-size slide

  26. Что еще предстоит
    • Добавить jones-complexity и wemake-python-
    styleguide
    • Допилить mypy-django-queryset
    • Ждать Gitlab и ReadTheDocs
    • Переехать на Postgres 10, Django 2

    View full-size slide

  27. Хотите себе такой
    проект? Пишите!
    [email protected]

    View full-size slide

  28. Вопросы?
    github.com/sobolevn

    View full-size slide