Django 프로젝트의 최상의 실천은 개발자를 만족시킬 수 있다

당신의 팀으로 하여금 당신의 개발 업무 절차를 즐기게 하고 싶습니까?당신은 소프트웨어를 구축하는 것이 재미있고 생존에 만족해야 한다고 생각합니까?만약 그렇다면, 이것은 당신의 댓글입니다!
저는 Django와 함께 개발한 지 여러 해가 되었습니다. Django 프로젝트의 설립에 대해 지금처럼 즐거웠던 적이 없습니다.다음은 제가 Django와 함께 개발하는 하루를 저와 제 엔지니어링 팀에서 가장 편안하고 즐거운 개발 체험으로 만들 수 있는 방법입니다.

A custom CLI tool for your Django project
타자가 아니라
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
...이 모든 게 자네에게 일어났나?나는 그렇다고 생각한다!
우리는 자기 기록의 Makefile로 이 점을 실현할 수 있다!다음은 제가 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
위의 include .env 줄을 보실 수 있습니다.따라서 make.env이라는 파일에 저장된 환경 변수를 액세스할 수 있습니다.이를 통해 Make는 내 가상 환경의 이름이나 $(DBNAME)psql으로 전달하는 등의 명령에 이러한 변수를 사용할 수 있습니다.
'##'이라는 이상한 주석 문법은 어떻게 된 것입니까?이러한 Makefile은 Django 프로젝트에 체크 인할 수 있는 편리한 명령줄 별명을 제공합니다.네가 이 별명들이 무엇인지 기억할 수만 있다면 그것은 매우 유용할 것이다.
기본적으로 위의 help 명령은 make 또는 make help을 실행할 때 유용한 명령 목록을 인쇄합니다.
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 명령을 소개합니다. 우리는 test 명령을 가지고 있으며, 이것은 우리가 좋아하는 옵션을 사용하여 우리의 테스트를 실행합니다.대박이다.
전체 post about self-documenting Makefiles here을 읽을 수 있으며 pipenv을 사용한 예제 Makefile도 포함되어 있습니다.

Save your brainpower with pre-commit hooks
나는 이전에 technical ergonomics에 관한 글을 썼는데, 그것들은 팀으로 하여금 더욱 쉽게 우수한 소프트웨어를 개발할 수 있게 한다.머리를 쓸 필요가 없는 부분은 코드에 서명하기 전에 미리 제출한 갈고리를 사용해서 라인 코드를 만드는 것이다.개발자가 서명한 코드의 질을 확보하는 데 도움이 되지만, 가장 중요한 것은 팀에서 단인용인지 쌍인용인지, 어디서 줄을 바꾸는지 기억하는 데 시간을 들이는 사람이 없다는 것이다.
명칭이 곤혹스러운 pre-commit framework은 로컬 환경에서 갈고리(복제 저장소에 포함되지 않음)의 일치성을 유지하는 기묘한 방법이다.이것은 Django 프로젝트를 위한 내 구성 파일 .pre-commit-config.yaml입니다.
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]
이 갈고리들은 의외의 비밀 제출을 검사하고 Black으로 파이톤 파일을 포맷하고 blacken-docs lint Markdown files으로 표지 파일의 파이톤 부분을 포맷합니다.당신의 특정한 용례에 대해 더 많은 유용한 갈고리를 사용할 수 있습니다: supported hooks을 참고하여 탐색하십시오.

Useful gitignores
팀의 일상적인 개발 체험을 개선하는 데 중시되지 않는 방법은 프로젝트의 전면적인 .gitignore 파일을 확보하는 것이다.이것은 비밀을 포함하는 파일이 제출되는 것을 방지하고, 생성된 git diff개의 파일을 영원히 선별하지 않도록 함으로써 개발자에게 몇 시간의 번거로운 작업을 절약할 수 있습니다.
gitignore for Python and Django projects을 효율적으로 만들기 위해 Toptal의 gitignore.io은 건장한 .gitignore 파일을 만드는 좋은 자원으로 사용할 수 있다.무시된 파일이 용례에 적합한지 확인하기 위해 생성된 결과를 직접 검사하는 것을 권장합니다. 무시할 파일은 주석이 붙지 않습니다.

Continuous testing with GitHub Actions
만약 당신의 팀이 GitHub에서 일한다면, 행동으로 테스트 과정을 구축하는 것은 쉬운 일이다.일치된 환경에서 모든pull이 실행을 요청하는 테스트는'내 기계에서 일한다'는 난제를 없애고 로컬에서 테스트를 기다리는 사람이 없도록 할 수 있다.
GitHub Actions와 같은 관리형 CI 환경에서도 관리형 서비스 리소스를 사용해야 하는 통합 테스트를 실행할 때 도움이 됩니다.encrypted secrets in a repository을 사용하여 Actions runner에게 테스트 환경의 자원에 대한 접근 권한을 부여할 수 있습니다. 개발자마다 테스트 자원과 접근 키를 만들 염려가 없습니다.
저는 작업 흐름 설정에 관한 글을 많이 썼는데 using one to run your Makefilehow to integrate GitHub event data을 포함합니다.깃허브는 interviewed me about Actions차례까지 있었다.
Django 프로젝트에 대해 GitHub 작업 흐름이 있습니다. 저장소에서pull 요청을 열 때마다 일치된 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 테스트 작업 흐름에서Makefile 명령을 사용하는 장점 중 하나는 한 곳에서만 업데이트할 수 있다는 것입니다. Makefile!더 이상 "왜 이것은 현지에서 일하는 것이지 CI에서 일하는 것이 아니야????"머리가 아프다.
만약 당신이 안전한 게임을 강화하고 싶다면, Django Security Check을 동작으로 추가할 수도 있다.

Set up your Django project for success
개발진을 즐겁게 해주고 싶으세요?이러한 Django 개발의 모범 사례를 통해 성공을 거둘 수 있습니다.기억해라, 1온스의 두뇌가 1파운드의 소프트웨어에 상당한다는 것을!
Django 및 우수 기술 팀을 구성하는 방법에 대한 자세한 내용은 victoria.dev 또는 subscribe via RSS을 참조하십시오.

좋은 웹페이지 즐겨찾기