백엔드 개발 파이썬 튜토리얼 Django API 프로젝트 설정

Django API 프로젝트 설정

Oct 28, 2024 pm 07:04 PM

Django API Project Setup

이 기사에서 무엇을 기대할 수 있습니까?

자, 코딩을 시작해 볼까요! Alive Diary의 아이디어를 소개하고 Gemini가 영혼이 될 수 있다는 것을 증명한 후 첫 번째 코딩 글입니다. 이제 Django를 사용하여 백엔드 코딩을 시작하겠습니다.
상황을 정리하기 위해 여러 기사를 통해 프로젝트에 대해 논의할 예정이므로 이 기사

  • 프로젝트 설정 과정을 다루겠습니다.
  • 사용된 라이브러리와 이를 사용하는 이유를 소개합니다.
  • 앱을 만들고 그 뒤에 있는 논리를 설명합니다.

지루하지 않게 최대한 많은 세부 사항을 다루도록 노력하겠습니다. 하지만 여전히 Python과 Django의 일부 측면에 익숙하실 것으로 기대합니다.

소스코드의 최종 버전은 https://github.com/saad4software/alive-diary-backend에서 확인하실 수 있습니다

시리즈 순서

관심 있으신 분들은 이전 글을 확인해보세요!

  1. 처음부터 AI 프로젝트, 아이디어, 살아 있는 일기
  2. Google AI Studio로 실현 가능함을 증명하세요
  3. Django API 프로젝트 설정(현재 위치 ?)

프로젝트를 시작하세요!

Python을 설치하고 운영체제에 맞는 가상 환경을 설정한 후. 해당 라이브러리를 설치하세요

Django==4.2.16          # it is django itself!
django-cors-headers==4.4.0  # avoid cors-headers issues
django-filter==24.3     # easily filter text fields 
djangorestframework==3.15.2 # rest framework!
djangorestframework-simplejwt==5.3.1    # JWT token
pillow==10.4.0          # for images
python-dotenv==1.0.1        # load config from .env file
google-generativeai==0.7.2  # google api
ipython==8.18.1         # process gemini responses
django-parler==2.3              # multiple languages support
django-parler-rest==2.2         # multi-language with restframework
로그인 후 복사
로그인 후 복사

requirements.txt

동일한 버전일 필요는 없지만 Python 버전에 따라 다음을 사용하여 각 버전을 수동으로 설치할 수 있습니다.

pip install django

또는 요구사항 파일을 생성하고 동일한 이전 버전을 사용하세요

pip install -r 요구사항.txt

django와 라이브러리가 설치되면 프로젝트를 시작할 수 있습니다

django-admin startproject alive_diary
cd alive_diary
python manage.py startapp app_account
python manage.py startapp app_admin
python manage.py startapp app_main
로그인 후 복사
로그인 후 복사

'alive_diary'라는 프로젝트를 만들고 그 안에 3개의 앱을 만들었습니다.

  • app_account: 사용자의 필수 계정 정보, 등록, 로그인, 비밀번호 변경, 계정 이메일 확인 및 유사한 책임을 관리합니다.
  • app_admin: 관리자 관련 작업을 위해 주로 이 간단한 앱의 사용자를 관리합니다
  • app_main: 메인 앱용

Django 앱을 다른 프로젝트에서 재사용할 수 있도록 최소한의 종속성을 유지할 것입니다.

설정

요컨대 이것이 최종 설정 파일이므로 빠르게 살펴보겠습니다

import os
from datetime import timedelta
from pathlib import Path
from dotenv import load_dotenv
로그인 후 복사
로그인 후 복사

datetime 패키지의 timedelta를 사용하여 JWT 수명을 설정하고, os 및 load_dotenv를 사용하여 .env 파일에서 변수를 로드했습니다.

load_dotenv()
로그인 후 복사
로그인 후 복사

.env 파일에서 변수 로드

BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = os.getenv("SECRET_KEY")
DEBUG = True
ALLOWED_HOSTS = ['*']
로그인 후 복사
로그인 후 복사

모든 IP로부터의 연결을 허용하기 위해 ALLOWED_HOSTS에 '*'를 추가했습니다. os.getenv는 .env 파일에서 키 값을 가져옵니다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
    'rest_framework',
    'django_filters',
    'app_account',
    'app_admin',
    'app_main',
]
로그인 후 복사
로그인 후 복사

corsheaders, Rest_framework 및 django_filters 앱과 세 가지 앱인 app_account, app_admin 및 app_main을 추가했습니다.

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
로그인 후 복사
로그인 후 복사

CommonMiddleware 앞에 CorsMiddleware 미들웨어를 추가하는 것을 잊지 마세요

Django==4.2.16          # it is django itself!
django-cors-headers==4.4.0  # avoid cors-headers issues
django-filter==24.3     # easily filter text fields 
djangorestframework==3.15.2 # rest framework!
djangorestframework-simplejwt==5.3.1    # JWT token
pillow==10.4.0          # for images
python-dotenv==1.0.1        # load config from .env file
google-generativeai==0.7.2  # google api
ipython==8.18.1         # process gemini responses
django-parler==2.3              # multiple languages support
django-parler-rest==2.2         # multi-language with restframework
로그인 후 복사
로그인 후 복사

설정 파일에 cors 헤더 구성 추가

django-admin startproject alive_diary
cd alive_diary
python manage.py startapp app_account
python manage.py startapp app_admin
python manage.py startapp app_main
로그인 후 복사
로그인 후 복사

Simple JWT 인증을 나머지 프레임워크 라이브러리의 기본 인증 클래스로 사용하세요.

import os
from datetime import timedelta
from pathlib import Path
from dotenv import load_dotenv
로그인 후 복사
로그인 후 복사

기본 사용자 클래스를 app_account에서 사용자 정의 클래스로 변경했지만 아직 이 모델을 만들지 않았습니다.

load_dotenv()
로그인 후 복사
로그인 후 복사

지원 언어를 추가하고 파일 및 정적 폴더를 설정했습니다

BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = os.getenv("SECRET_KEY")
DEBUG = True
ALLOWED_HOSTS = ['*']
로그인 후 복사
로그인 후 복사

이메일 확인 절차를 위한 이메일 설정입니다. .env 파일에서 로드하고 있습니다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
    'rest_framework',
    'django_filters',
    'app_account',
    'app_admin',
    'app_main',
]
로그인 후 복사
로그인 후 복사

간단한 JWT 토큰 설정, 액세스 토큰 "ACCESS_TOKEN_LIFETIME"의 수명을 8시간으로 설정하고 새로 고침 토큰 수명 "REFRESH_TOKEN_LIFETIME"을 5일로 설정합니다. 새로 고침 토큰을 순환하고(모든 새로 고침 토큰 요청과 함께 새 새로 고침 토큰 전송) "ROTATE_REFRESH_TOKENS"를 사용하고 인증을 위해 'Bearer' 헤더 접두사 "AUTH_HEADER_TYPES"를 사용하고 있습니다.

환경 파일

.env 파일에서 사용되는 변수는 다음과 같아야 합니다

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
로그인 후 복사
로그인 후 복사

프로젝트에 따라 값을 설정하면 생성된 django 비밀 키를 비밀 키로 사용할 수 있고, AI 스튜디오에서 Google Gemini API 키를 받고, 확인 이메일에 이메일 계정을 사용할 수 있습니다.
Google 계정을 사용하여 이메일을 보내는 것은 가능하지만 권장되지 않습니다. 설정은 다음과 같아야 합니다

ROOT_URLCONF = 'alive_diary.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'alive_diary.wsgi.application'

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


AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

STATIC_URL = '/static/'

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

# CORS HEADERS
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
로그인 후 복사

사용자는 Gmail 계정에 액세스하려면 '보안 수준이 낮은 앱'을 활성화해야 합니다. 어쨌든 우리는 먼저 모든 것을 구축하고 나중에 걱정할 수 있습니다. 지금은 이메일 확인 부분을 무시하세요.

끝내다

프로젝트를 실행하고 이 기사를 마무리하기 위해 app_account/models.py에서 사용자 모델을 생성해 보겠습니다

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
}
로그인 후 복사

그렇게 간단합니다! (다음 글에서 작업할 예정입니다.) 마이그레이션을 진행하고 마이그레이션해 봅시다

AUTH_USER_MODEL = 'app_account.User'
로그인 후 복사

모든 것이 순조롭게 진행되었다면 이제
까지 프로젝트를 실행할 수 있을 것입니다.

LANGUAGES = [
    ('en', 'English'),
    ('ar', 'Arabic')
]

STATICFILES_DIRS = [os.path.join(BASE_DIR, "app_main", "site_static")]
STATIC_ROOT = os.path.join(BASE_DIR, "app_main", "static")
MEDIA_ROOT = os.path.join(BASE_DIR, "app_main", "media")
MEDIA_URL = "/app_main/media/"

로그인 후 복사

어떤 문제든 저에게 알려주세요. 이제 프로젝트 앱 작업을 시작할 준비가 되었습니다!

그리고 그게 다야!

다음 기사에서는 사용자 관리 앱인 app_account에 대해 다루겠습니다. 여기에는 사용자 관리, 로그인, 등록, 비밀번호 변경, 비밀번호 찾기, 계정 확인 및 대부분의 앱에 필요한 기타 사용자 관련 작업이 포함되어 있습니다.

기대해 주세요 ?

위 내용은 Django API 프로젝트 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Python vs. C : 응용 및 사용 사례가 비교되었습니다 Python vs. C : 응용 및 사용 사례가 비교되었습니다 Apr 12, 2025 am 12:01 AM

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

파이썬 : 게임, Guis 등 파이썬 : 게임, Guis 등 Apr 13, 2025 am 12:14 AM

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python vs. C : 학습 곡선 및 사용 편의성 Python vs. C : 학습 곡선 및 사용 편의성 Apr 19, 2025 am 12:20 AM

Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

파이썬과 시간 : 공부 시간을 최대한 활용 파이썬과 시간 : 공부 시간을 최대한 활용 Apr 14, 2025 am 12:02 AM

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python vs. C : 성능과 효율성 탐색 Python vs. C : 성능과 효율성 탐색 Apr 18, 2025 am 12:20 AM

Python은 개발 효율에서 C보다 낫지 만 C는 실행 성능이 높습니다. 1. Python의 간결한 구문 및 풍부한 라이브러리는 개발 효율성을 향상시킵니다. 2.C의 컴파일 유형 특성 및 하드웨어 제어는 실행 성능을 향상시킵니다. 선택할 때는 프로젝트 요구에 따라 개발 속도 및 실행 효율성을 평가해야합니다.

Python Standard Library의 일부는 무엇입니까? 목록 또는 배열은 무엇입니까? Python Standard Library의 일부는 무엇입니까? 목록 또는 배열은 무엇입니까? Apr 27, 2025 am 12:03 AM

Pythonlistsarepartoftsandardlardlibrary, whileraysarenot.listsarebuilt-in, 다재다능하고, 수집 할 수있는 반면, arraysarreprovidedByTearRaymoduledlesscommonlyusedDuetolimitedFunctionality.

Python 학습 : 2 시간의 일일 연구가 충분합니까? Python 학습 : 2 시간의 일일 연구가 충분합니까? Apr 18, 2025 am 12:22 AM

하루에 2 시간 동안 파이썬을 배우는 것으로 충분합니까? 목표와 학습 방법에 따라 다릅니다. 1) 명확한 학습 계획을 개발, 2) 적절한 학습 자원 및 방법을 선택하고 3) 실습 연습 및 검토 및 통합 연습 및 검토 및 통합,이 기간 동안 Python의 기본 지식과 고급 기능을 점차적으로 마스터 할 수 있습니다.

파이썬 : 자동화, 스크립팅 및 작업 관리 파이썬 : 자동화, 스크립팅 및 작업 관리 Apr 16, 2025 am 12:14 AM

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

See all articles