Django 프로젝트의 최상의 실천은 개발자를 만족시킬 수 있다
14643 단어 pythondjangoprogramming
저는 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 Makefile과 how 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을 참조하십시오.
Reference
이 문제에 관하여(Django 프로젝트의 최상의 실천은 개발자를 만족시킬 수 있다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/victoria/django-project-best-practices-to-keep-your-developers-happy-23e4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)