Рубрики
Без рубрики

Лучшие практики проекта Django, чтобы поддерживать ваших разработчиков счастливый

Вы хотите, чтобы ваша команда наслаждалась рабочим процессом разработки? Как вы думаете, создание программного обеспечения должно быть … Tagged с помощью Python, программирования, Django.

Вы хотите, чтобы ваша команда Наслаждайтесь Ваш рабочий процесс разработки? Как вы думаете, создание программного обеспечения должно быть Веселый и экзистентный? Если так, Это пост для тебя!

Я развивался с Django в течение многих лет, и я никогда не был счастливее с разработкой своего проекта Django, чем сейчас. Вот как я делаю день развития с Джанго самым расслабляющим и приятным опытом развития, возможным для меня и моей инженерной команды.

Пользовательский инструмент CLI для вашего проекта Django

Вместо печати:

python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py collectstatic
python3 manage.py runserver

Разве не было бы намного приятнее ввести:

make start

… И есть все, что случилось для вас? Я думаю так!

Мы можем сделать это с помощью самостоятельного заготовки! Вот тот, который я часто использую при разработке моих приложений Django, например ApplyByapi.com :

SHELL := /bin/bash

include .env

.PHONY: help
help: ## Show this help
    @egrep -h '\s##\s' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'

.PHONY: venv
venv: ## Make a new virtual environment
    python3 -m venv $(VENV) && source $(BIN)/activate

.PHONY: install
install: venv ## Make venv and install requirements
    $(BIN)/pip install -r requirements.txt

migrate: ## Make and run migrations
    $(PYTHON) manage.py makemigrations
    $(PYTHON) manage.py migrate

db-up: ## Pull and start the Docker Postgres container in the background
    docker pull postgres
    docker-compose up -d

db-shell: ## Access the Postgres Docker database interactively with psql
    docker exec -it container_name psql -d $(DBNAME)

.PHONY: test
test: ## Run tests
    $(PYTHON) $(APP_DIR)/manage.py test application --verbosity=0 --parallel --failfast

.PHONY: run
run: ## Run the Django server
    $(PYTHON) $(APP_DIR)/manage.py runserver

start: install migrate run ## Install requirements, apply migrations, then start development server

Вы заметите наличие линии Включите .env выше. Это обеспечивает сделать имеет доступ к переменным среды, хранящиеся в файле с именем .env . Это позволяет сделать использовать эти переменные в своих командах, например, имя моей виртуальной среды или пройти в $ (Dbname) к PSQL .

Что с этим странным ” ## ” Синтаксис комментариев? Подобный макияж дает вам удобный набор псевдонимов командной строки, которые вы можете проверить в своем проекте Django. Это очень полезно, пока вы можете вспомнить, каковы все эти псевдонимы.

Помощь Команда выше, которая работает по умолчанию, печатает полезный список доступных команд при запуске сделать или Сделайте помощь :

help                 Show this help
venv                 Make a new virtual environment
install              Make venv and install requirements
migrate              Make and run migrations
db-up                Pull and start the Docker Postgres container in the background
db-shell             Access the Postgres Docker database interactively with psql
test                 Run tests
run                  Run the Django server
start                Install requirements, apply migrations, then start development server

Все обычные команды Django покрыты, и у нас есть тест Команда, которая запускает наши тесты с опциями, которые мы предпочитаем. Блестящий.

Вы можете прочитать мой полный Сообщите о самоокупании Makefiles здесь , который также включает в себя пример Makefile с использованием пипенв .

Сохраните свой мозг с помощью крючков с предварительной коммитацией

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

Смущающе названный Предварительная структура это фантастический способ поддерживать крючки (которые не включены в клонированные репозитории) в соответствии с местными средами. Вот мой файл конфигурации, .pre-commit-config.yaml , для моих проектов Django:

fail_fast: true
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v3.1.0
    hooks:
      - id: detect-aws-credentials
  - repo: https://github.com/psf/black
    rev: 19.3b0
    hooks:
      - id: black
  - repo: https://github.com/asottile/blacken-docs
    rev: v1.7.0
    hooks:
      - id: blacken-docs
        additional_dependencies: [black==19.3b0]
  - repo: local
    hooks:
      - id: markdownlint
        name: markdownlint
        description: "Lint Markdown files"
        entry: markdownlint '**/*.md' --fix --ignore node_modules --config "./.markdownlint.json"
        language: node
        types: [markdown]

Эти крючки проверяют на случайные секретные коммиты, форматируйте файлы Python с использованием Черный , Формат фрагменты Python в файлах разметки с использованием Blacken-Docs и Lint Markdown Files также. Вероятно, есть еще более полезные крючки для вашего конкретного варианта использования: см. Поддерживаемые крючки исследовать.

Полезные Gitignores

Недооценка способ улучшить повседневное развитие вашей команды-убедиться, что ваш проект использует всестороннюю .gitignore файл. Это может помочь предотвратить совершенные файлы, содержащие секреты, и может дополнительно сэкономить часы разработчиков Tedium, гарантируя, что вы никогда не просеиваете через git diff сгенерированных файлов.

Эффективно создать Gitignore для Python и Django Projects , Toptal’s gitignore.io Может быть хорошим ресурсом для создания надежного .gitignore файл. Я до сих пор рекомендую изучить сгенерированные результаты самостоятельно, чтобы гарантировать, что игнорируемые файлы соответствуют вашим варианту использования, и что ничего, что вам нужно игнорировать, не прокомментировано.

Непрерывное тестирование с действиями GitHub

Если ваша команда работает над GitHub, настройка процесса тестирования с действиями-это низко висящие фрукты. Тесты, которые работают в постоянной среде по каждому запросу на притяжение, могут помочь устранить загадки «Работы на моей машине», а также гарантировать, что никто не сидит вокруг, ожидая, когда тест будет работать локально.

Расстановленная среда CI, такая как действия GitHub, также может помочь при проведении интеграционных тестов, которые требуют использования ресурсов управляемых услуг. Вы можете использовать Зашифрованные секреты в репозитории Чтобы предоставить действию доступ к ресурсам в среде тестирования, не беспокоясь о создании ресурсов тестирования и доступ к ключам для каждого из ваших разработчиков.

Я много раз писал о настройке рабочих процессов действий, в том числе Использование одного для запуска вашего Makefile и Как интегрировать данные о событии GitHub Анкет GitHub даже взял интервью за действиями однажды.

Для проектов Django есть рабочий процесс действий GitHub, который запускает тесты с последовательной версией Python всякий раз, когда кто -то открывает запрос на привлечение в репозитории.

name: Run Django tests

on: pull_request

jobs:
  test:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.8'
      - name: Install dependencies
        run: make install
      - name: Run tests
        run: make test

Для команд установки и тестирования я просто использовал макияж, который был зарегистрирован в репозитории. Преимущество использования ваших команд MakeFile в ваших тестовых процессах CI заключается в том, что вам нужно только держать их в курсе в одном месте – ваш файл Make -файл! Нет больше “Почему это работает на месте, но не в CI ??!” ” головные боли.

Если вы хотите увеличить свою игру безопасности, вы можете добавить Django Security Check как действие тоже.

Настройте свой проект Django для успеха

Хотите помочь сохранить свою команду разработчиков счастливыми? Установите их на успех с этими лучшими практиками для Django Development. Помните, что унция мозгового управления стоит фунта программного обеспечения!

Для получения дополнительных советов о Джанго и о том, как построить отличную техническую команду, перейдите к Victoria.dev или подписаться через RSS Анкет

Оригинал: “https://dev.to/victoria/django-project-best-practices-to-keep-your-developers-happy-23e4”