파이썬

 

 쿠키커터

https://github.com/cookiecutter/cookiecutter-django

 

 

가상환경 생성

 

Django 프로젝트 폴더로 이동한 후 아래 명령어를 실행합니다.

python -m venv venv

 

가상환경 이동

.\venv\Scripts\activate

 

  •  
  • venv는 가상환경 폴더의 이름으로 원하는 이름으로 변경 가능 (myenv 등).
  • 폴더 구조 예시
프로젝트/
├── venv/  <-- 가상환경 폴더
├── djangogram ├
               ├─ manage.py


 

1. 쿠키커터 설치

먼저 쿠키커터를 설치합니다.

pip install cookiecutter

 

 

 

2. 쿠키커터 Django 템플릿 사용

Django 프로젝트 템플릿을 기반으로 프로젝트를 생성합니다.

cookiecutter https://github.com/cookiecutter/cookiecutter-django.git

 

 

3. 설정 항목 입력

1. project_name (My Awesome Project)
설명: 프로젝트의 전체 이름입니다. 예: Djangogram, MySite.
사용 목적: 문서나 프로젝트 설명 등에서 프로젝트 이름으로 사용됩니다.


2. project_slug (djangogram)
설명: 프로젝트 이름의 URL-friendly 버전으로, 일반적으로 소문자와 하이픈(-) 또는 밑줄(_)만 포함합니다.
사용 목적: 프로젝트의 디렉토리 이름, 모듈 이름 등에서 사용됩니다.
예시: 입력값이 없으면 project_name을 기반으로 자동 생성됩니다.


3. description (Behold My Awesome Project!)
설명: 프로젝트에 대한 간단한 설명입니다.
사용 목적: README 파일이나 프로젝트 문서에서 사용됩니다.


4. author_name (Daniel Roy Greenfeld)
설명: 프로젝트의 작성자 이름입니다.
사용 목적: README 파일 또는 라이선스 파일에서 작성자를 표시합니다.


5. domain_name (example.com)
설명: 프로젝트가 배포될 도메인 이름입니다.
사용 목적: 기본 설정 파일에서 ALLOWED_HOSTS와 관련된 부분에 사용됩니다.


6. email (daniel-roy-greenfeld@example.com)
설명: 프로젝트 작성자나 관리자의 이메일 주소입니다.
사용 목적: 문서나 설정 파일에서 이메일이 필요할 때 사용됩니다.


7. version (0.1.0)
설명: 프로젝트의 초기 버전입니다.
사용 목적: 패키지화하거나 프로젝트 관리 시 버전을 표시할 때 사용됩니다.


8. open_source_license
설명: 프로젝트에 적용할 오픈소스 라이선스를 선택합니다.
1 - MIT: 자유로운 사용, 수정, 재배포가 가능한 라이선스.
2 - BSD: MIT와 유사하지만 약간 더 엄격한 조건 포함.
3 - GPLv3: 수정 및 재배포 시 소스 코드 공개를 요구.
4 - Apache Software License 2.0: 상업적 사용과 특허 문제 해결에 강점.
5 - Not open source: 오픈소스가 아닌 프로젝트로 설정.
사용 목적: 프로젝트에 법적 보호를 제공합니다.


9. username_type
설명: 사용자 인증 시 사용할 주요 필드를 선택합니다.
1 - username: 사용자 이름으로 인증.
2 - email: 이메일로 인증.
사용 목적: 장고 사용자 모델(User)의 인증 필드를 설정합니다.


10. timezone (UTC)
설명: 프로젝트에서 사용할 기본 시간대를 설정합니다.
사용 목적: settings.py의 TIME_ZONE에 반영됩니다.
예시: 한국 표준시(KST)는 Asia/Seoul로 설정.


11. windows (n)
설명: 프로젝트가 Windows 환경에서 실행될 것인지 선택합니다.
사용 목적: Windows 관련 설정을 적용합니다.
입력 예시: Windows를 사용하면 y, 그렇지 않으면 n.


12. editor
설명: 기본 개발 환경으로 사용할 에디터를 선택합니다.
1 - None: 특정 에디터 설정 없이 진행.
2 - PyCharm: PyCharm 관련 설정 포함.
3 - VS Code: VS Code 관련 설정 포함.


13. use_docker (n)
설명: Docker를 사용할지 여부를 선택합니다.
사용 목적: Docker와 Docker Compose 설정 파일을 생성합니다.


14. postgresql_version
설명: PostgreSQL의 버전을 선택합니다.
사용 목적: PostgreSQL 데이터베이스 설정 및 Docker Compose 파일에서 사용됩니다.


15. cloud_provider
설명: 클라우드 서비스를 사용할 경우 제공자를 선택합니다.
1 - AWS: Amazon Web Services 설정 포함.
2 - GCP: Google Cloud Platform 설정 포함.
3 - Azure: Microsoft Azure 설정 포함.
4 - None: 클라우드 서비스 사용 안 함.


16. mail_service
설명: 이메일 발송에 사용할 서비스 제공자를 선택합니다.
사용 목적: 이메일 관련 설정 파일에 반영됩니다.


17. use_async (n)
설명: 비동기 기능(AIOHTTP 등)을 사용할지 선택합니다.


18. use_drf (n)
설명: Django REST Framework를 사용할지 선택합니다.
사용 목적: REST API를 위한 추가 설정 포함 여부 결정.


19. frontend_pipeline
설명: 프론트엔드 빌드 도구를 선택합니다.
1 - None: 빌드 도구 사용 안 함.
2 - Django Compressor: Django 내에서 정적 파일 압축.
3 - Gulp: Gulp를 사용한 빌드 설정.
4 - Webpack: Webpack 기반 설정 추가.


20. use_celery (n)
설명: 비동기 작업 처리기를 사용할지 선택합니다.
사용 목적: Celery 관련 설정 추가 여부.


21. use_mailpit (n)
설명: 개발 중 이메일 테스트를 위한 Mailpit 사용 여부를 선택합니다.


22. use_sentry (n)
설명: 에러 및 성능 모니터링을 위한 Sentry를 사용할지 선택합니다.


23. use_whitenoise (n)
설명: 정적 파일 서빙을 위해 Whitenoise를 사용할지 선택합니다.


24. use_heroku (n)
설명: Heroku에 배포할지 여부를 선택합니다.
사용 목적: Heroku 관련 파일 및 설정 추가.


25. ci_tool
설명: Continuous Integration(CI) 도구를 선택합니다.
1 - None: CI 사용 안 함.
2 - Travis: Travis CI 설정 추가.
3 - Gitlab: GitLab CI/CD 설정 추가.
4 - Github: GitHub Actions 설정 추가.
5 - Drone: Drone CI 설정 추가.


26. keep_local_envs_in_vcs (y)
설명: .env 파일을 버전 관리 시스템에 포함할지 여부를 선택합니다.


27. debug (n)
설명: 프로젝트 초기화 시 디버그 정보를 출력할지 선택합니다.

 


 

 

 

4. 라이브러리 패키지 설치

 

쿠키커터 requirements 디렉토리 local.txt 실행하여 설치

 생성된 프로젝트명(예: djangogram ) 디렉토리로 이동후

cd .\djangogram\  


패키지 인스톨 명령어 
 

pip install -r requirements/local.txt

pip install -r requirements/base.txt

또는

pip install -r .\프로젝트명requirements\local.txt

 

설치시 다음과 같은 오류 발생시

Building wheels for collected packages: psycopg-c
  Building wheel for psycopg-c (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for psycopg-c (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [19 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build\lib.win-amd64-cpython-312\psycopg_c
      copying psycopg_c\version.py -> build\lib.win-amd64-cpython-312\psycopg_c
      copying psycopg_c\__init__.py -> build\lib.win-amd64-cpython-312\psycopg_c
      copying psycopg_c\_psycopg.pyi -> build\lib.win-amd64-cpython-312\psycopg_c
      copying psycopg_c\py.typed -> build\lib.win-amd64-cpython-312\psycopg_c
      copying psycopg_c\pq.pxd -> build\lib.win-amd64-cpython-312\psycopg_c
      creating build\lib.win-amd64-cpython-312\psycopg_c\_psycopg
      copying psycopg_c\_psycopg\endian.pxd -> build\lib.win-amd64-cpython-312\psycopg_c\_psycopg
      copying psycopg_c\_psycopg\oids.pxd -> build\lib.win-amd64-cpython-312\psycopg_c\_psycopg
      copying psycopg_c\_psycopg\__init__.pxd -> build\lib.win-amd64-cpython-312\psycopg_c\_psycopg
      creating build\lib.win-amd64-cpython-312\psycopg_c\pq
      copying psycopg_c\pq\libpq.pxd -> build\lib.win-amd64-cpython-312\psycopg_c\pq
      copying psycopg_c\pq\__init__.pxd -> build\lib.win-amd64-cpython-312\psycopg_c\pq
      running build_ext
      building 'psycopg_c._psycopg' extension
      error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for psycopg-c
Failed to build psycopg-c
ERROR: Failed to build installable wheels for some pyproject.toml based projects (psycopg-c)

Microsoft C++ Build Tools 설치

오류 메시지에서 언급된 대로, Microsoft Visual C++ 14.0 이상이 필요합니다. 다음 단계를 수행하여 설치하세요.

  1. Microsoft C++ Build Tools 웹사이트로 이동
  2. "Download Build Tools" 버튼을 클릭하여 설치 프로그램 다운로드
  3. 설치 프로그램을 실행한 후, 아래 항목을 체크하여 설치:
    • C++ CMake Tools for Windows
    • MSVC v143 - VS 2022 C++ x64/x86 빌드 도구
    • Windows 10 SDK (최신 버전 선택)

설치 후 시스템을 재부팅하세요.

 

 

 

 

 

또는 개별 설치

1. 장고 설치
pip install django

2.django-environ 설치

pip install django-environ


3..env 파일이 없는 경우 .env 파일을 생성하고 필요한 환경 변수를 추가하
DEBUG=True
SECRET_KEY=your-secret-key

4.crispy_forms 설치

pip install django-crispy-forms


5.crispy_bootstrap5 설치
pip install crispy-bootstrap5


6.django-allauth 설치

pip install django-allauth


7.  django-debug-toolbar 설치 
pip install django-debug-toolbar


8. django-extensions 설치
pip install django-extensions

9.
pip install psycopg2

10.
pip install psycopg2-binary


11.
pip install fido2

 

 


5.db  연결

PostgreSQL 명령 프롬프트에서 djangogram이라는 데이터베이스를 생성

데이터베이스 생성
CREATE DATABASE djangogram;

사용자 생성

CREATE USER djangogram_user WITH PASSWORD '1111';

권한 부여
GRANT ALL PRIVILEGES ON DATABASE djangogram TO djangogram_user;

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO djangogram_user;



GRANT ALL ON SCHEMA public TO djangogram_user;


 

쿠키커터 실행시 권한 오류가 날경우 pgadmin 을 통해 superuser 권한을 부여해 줍니다.

 

 

settings/base.py

DATABASES = {
    "default": env.db(
        "DATABASE_URL",
        #default="postgres://localhost/djangogram",
        default="postgres://djangogram_user:1111@192.168.0.19:5432/djangogram",
    ),

#     또는 
#    'default': {
#         'ENGINE': 'django.db.backends.postgresql',
#         'NAME': 'djangogram',
#         'USER': 'djangogram_user',
#         'PASSWORD': '1111',
#         'HOST': '192.168.0.19',
#         'PORT': '5432',
#     }

}

 

 

.env 파일에 추가

예를 들어, PostgreSQL 데이터베이스 정보가 다음과 같다면:

  • Database Name: djangogram
  • Username: djangogram_user
  • Password: 1111
  • Host: localhost
  • Port: 5432

.env 파일에 다음 내용을 추가합니다:

DATABASE_URL=postgres://djangogram_user:1111@localhost:5432/djangogram

 

 

마이그레이션 수행 다음 명령어를 순서대로 실행하여 데이터베이스 테이블을 생성합니다:

python manage.py makemigrations
python manage.py migrate
python manage.py runserver


또는

python .\프로젝트명\manage.py makemigrations
python .\프로젝트명\manage.py migrate


서버구동
python .\프로젝트명\manage.py runserver

 

 

 

 

 

 

 

6. 프로젝트 실행

생성된 폴더로 이동하고 가상환경을 설정한 후 Django 서버를 실행합니다.

 

cd [project_slug]
python -m venv myenv
source myenv/bin/activate   # Windows에서는 `myenv\Scripts\activate`
pip install -r requirements/local.txt
python manage.py runserver

 

 

 

 

 

기본 데이터베이스 설정

쿠키커터 Django 템플릿은 다음과 같은 기본 데이터베이스를 지원합니다:

  1. PostgreSQL
    • 기본 옵션으로 제공됩니다.
    • PostgreSQL은 확장성, 성능, 기능 면에서 뛰어나 Django 프로젝트에서 많이 사용됩니다.

 

 

 

다른 데이터베이스 사용 방법

쿠키커터로 프로젝트를 생성한 후, 기본 데이터베이스 대신 다른 데이터베이스를 사용하려면 settings.py 파일을 수정하면 됩니다.

1. SQLite 사용 (개발 단계에서 간단히 사용 가능)

settings/base.py 또는 settings/local.py에서 DATABASES 설정을 변경합니다.

 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

 

 

2. MySQL 사용

MySQL을 사용하려면 mysqlclient 라이브러리를 설치하고, DATABASES 설정을 다음과 같이 변경합니다:

 

pip install mysqlclient
 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_db_name',
        'USER': 'your_username',
        'PASSWORD': 'your_password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

 

 

 

3. MariaDB 사용

MariaDB는 MySQL과 호환됩니다. 위의 MySQL 설정에서 MariaDB 접속 정보를 넣으면 됩니다.

 

 

 

4. Oracle Database 사용

Oracle을 사용하려면 cx_Oracle 패키지를 설치해야 합니다.

pip install cx_Oracle

 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'your_db_service_name',
        'USER': 'your_username',
        'PASSWORD': 'your_password',
        'HOST': 'localhost',
        'PORT': '1521',
    }
}

 

 

PostgreSQL을 권장하는 이유

쿠키커터 Django 템플릿에서 PostgreSQL을 기본 옵션으로 제공하는 이유는 다음과 같습니다:

  • 고급 기능 제공 (JSONB, Full-Text Search 등).
  • 확장성 및 대용량 데이터 처리에 유리.
  • 오픈소스이면서도 높은 성능 제공.

 

 

 

쿠키커터는 PostgreSQL을 기본으로 사용하지만, Django의 유연성 덕분에 SQLite, MySQL, MariaDB, Oracle 등 다른 데이터베이스도 얼마든지 사용할 수 있습니다.

필요에 따라 settings.py를 변경해 원하는 데이터베이스를 설정하면 됩니다.

 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

의리를 숭상하고 육체나 생명을 비롯한 형이하(形而下)의 것은 모두 도외시해야 한다. -장자

댓글 ( 0)

댓글 남기기

작성