
내 Cookiecutter Django 설정
직장에서 만드는 Django 프로젝트에 대한 몇 가지 특정 요구 사항이 있으므로 다음은 일을 진행하는 데 도움이 되는 cookiecutter-django을 사용하는 방법입니다.
docs에서 : "Cookiecutter Django는 프로덕션 준비 Django 프로젝트를 시작하기 위한 프로젝트 템플릿입니다."
로컬 개발의 SQLite 프로덕션용 도커 사이트 미리보기용 Heroku 프로덕션의 정적 파일에 대한 사용자 지정 클라우드 공급자
자신의 이름, 이메일 등을 추가하십시오. 개인적으로 저는 이메일에 SendGrid을 사용하는 것을 좋아합니다. 그 이유는 훌륭한 무료 계층과 사용 용이성 때문입니다. 또한 더 큰 클라이언트를 위해 더 큰 워크로드로 쉽게 확장할 수 있습니다. Whitenoise은 정적 파일 제공에 사용하는 도구입니다.
내 로컬 환경에서는 PostgreSQL을 사용하지 않으므로 요구 사항을 설치하기 전에 몇 가지 사항을 변경해야 합니다.
그런 다음
이 동일한 로컬 설정 파일에 있는 동안(현재 로컬 환경에서 Docker를 사용하지 않기 때문에) 행
마지막으로 SQLite 데이터베이스에서 작동하지 않는 일부 논리가 있는 마이그레이션이 있으므로 이를 추가했습니다. 문제의 파일은
이 마이그레이션에서 생성된 사이트는 일반적으로 로컬에 있는 유일한 사이트 레코드이므로 이 마이그레이션은 어쨌든 내가 하고 있는 작업에 실제로 영향을 미치지 않습니다. 나중에 필요한 경우 SQL을 사용하여 데이터베이스를 수동으로 업데이트할 수 있습니다. 이 작업을 수행하는 더 좋은 방법이 있으면 의견에 알려주십시오. 그러나 이것은 저에게 효과적이었습니다.
이제 가상 환경을 만들고, 로컬 요구 사항을 설치하고, 데이터베이스를 마이그레이션할 준비가 되었습니다.
쿠키커터 장고란?
docs에서 : "Cookiecutter Django는 프로덕션 준비 Django 프로젝트를 시작하기 위한 프로젝트 템플릿입니다."
내 요구 사항
설정
cookiecutter
를 설치하고 Cookiecutter Django repository에 대해 실행하십시오.pip install "cookiecutter>=1.7.0"
cookiecutter https://github.com/cookiecutter/cookiecutter-django
자신의 이름, 이메일 등을 추가하십시오. 개인적으로 저는 이메일에 SendGrid을 사용하는 것을 좋아합니다. 그 이유는 훌륭한 무료 계층과 사용 용이성 때문입니다. 또한 더 큰 클라이언트를 위해 더 큰 워크로드로 쉽게 확장할 수 있습니다. Whitenoise은 정적 파일 제공에 사용하는 도구입니다.
project_name [My Awesome Project]: Project Name
project_slug [project_name]:
description [Behold My Awesome Project!]:
author_name [Daniel Roy Greenfeld]: David Buckley
domain_name [example.com]: example.com
email [[email protected]]: [email protected]
version [0.1.0]:
Select open_source_license:
1 - MIT
2 - BSD
3 - GPLv3
4 - Apache Software License 2.0
5 - Not open source
Choose from 1, 2, 3, 4, 5 [1]: 5
timezone [UTC]:
windows [n]:
use_pycharm [n]:
use_docker [n]: y
Select postgresql_version:
1 - 14
2 - 13
3 - 12
4 - 11
5 - 10
Choose from 1, 2, 3, 4, 5 [1]: 1
Select cloud_provider:
1 - AWS
2 - GCP
3 - None
Choose from 1, 2, 3 [1]: 3
Select mail_service:
1 - Mailgun
2 - Amazon SES
3 - Mailjet
4 - Mandrill
5 - Postmark
6 - Sendgrid
7 - SendinBlue
8 - SparkPost
9 - Other SMTP
Choose from 1, 2, 3, 4, 5, 6, 7, 8, 9 [1]: 6
use_async [n]: y
use_drf [n]: y
Select frontend_pipeline:
1 - None
2 - Django Compressor
3 - Gulp
Choose from 1, 2, 3 [1]: 2
use_celery [n]:
use_mailhog [n]:
use_sentry [n]:
use_whitenoise [n]: y
use_heroku [n]: y
Select ci_tool:
1 - None
2 - Travis
3 - Gitlab
4 - Github
Choose from 1, 2, 3, 4 [1]:
keep_local_envs_in_vcs [y]: n
debug [n]: y
SQLite 설정
내 로컬 환경에서는 PostgreSQL을 사용하지 않으므로 요구 사항을 설치하기 전에 몇 가지 사항을 변경해야 합니다.
requirements/local.txt
에서 psycopg2
를 종속성(PostgreSQL 패키지)으로 제거합니다....
# psycopg2==2.9.3 # https://github.com/psycopg/psycopg2
...
그런 다음
config/settings/local.py
에서 DATABASES = {"default": env.db("DATABASE_URL")}
줄을 다음으로 바꿉니다.DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": ROOT_DIR / "db.sqlite3",
}
}
이 동일한 로컬 설정 파일에 있는 동안(현재 로컬 환경에서 Docker를 사용하지 않기 때문에) 행
if env("USE_DOCKER") == "yes":
을 다음으로 바꾸십시오.if env("USE_DOCKER", default="no") == "yes":
마지막으로 SQLite 데이터베이스에서 작동하지 않는 일부 논리가 있는 마이그레이션이 있으므로 이를 추가했습니다. 문제의 파일은
project_name/contrib/sites/migrations/0003_set_site_domain_and_name.py
입니다.def _update_or_create_site_with_sequence(site_model, connection, domain, name):
...
if (
created
and not "ENGINE" in settings.DATABASES["default"]
or settings.DATABASES["default"]["ENGINE"] != "django.db.backends.sqlite3"
):
# We provided the ID explicitly when creating the Site entry, therefore the DB
...
이 마이그레이션에서 생성된 사이트는 일반적으로 로컬에 있는 유일한 사이트 레코드이므로 이 마이그레이션은 어쨌든 내가 하고 있는 작업에 실제로 영향을 미치지 않습니다. 나중에 필요한 경우 SQL을 사용하여 데이터베이스를 수동으로 업데이트할 수 있습니다. 이 작업을 수행하는 더 좋은 방법이 있으면 의견에 알려주십시오. 그러나 이것은 저에게 효과적이었습니다.
요구 사항 설치 및 데이터베이스 마이그레이션
이제 가상 환경을 만들고, 로컬 요구 사항을 설치하고, 데이터베이스를 마이그레이션할 준비가 되었습니다.
python -m venv venv
source venv/bin/activate # venv/Scripts/activate for Windows
pip install -r requirements/local.txt
python manage.py migrate
*.sqlite3
를 .gitignore
파일에 추가해야 합니다(아직 파일에 없고 로컬로 이동할 준비가 된 경우!