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

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으로 문의하세요.
Python을 사용하여 텍스트 파일의 ZIPF 배포를 찾는 방법Python을 사용하여 텍스트 파일의 ZIPF 배포를 찾는 방법Mar 05, 2025 am 09:58 AM

이 튜토리얼은 Python을 사용하여 Zipf의 법칙의 통계 개념을 처리하는 방법을 보여주고 법을 처리 할 때 Python의 읽기 및 대형 텍스트 파일을 정렬하는 효율성을 보여줍니다. ZIPF 분포라는 용어가 무엇을 의미하는지 궁금 할 것입니다. 이 용어를 이해하려면 먼저 Zipf의 법칙을 정의해야합니다. 걱정하지 마세요. 지침을 단순화하려고 노력할 것입니다. Zipf의 법칙 Zipf의 법칙은 단순히 : 큰 자연어 코퍼스에서 가장 자주 발생하는 단어는 두 번째 빈번한 단어, 세 번째 빈번한 단어보다 세 번, 네 번째 빈번한 단어 등 4 배나 자주 발생합니다. 예를 살펴 보겠습니다. 미국 영어로 브라운 코퍼스를 보면 가장 빈번한 단어는 "TH입니다.

HTML을 구문 분석하기 위해 아름다운 수프를 어떻게 사용합니까?HTML을 구문 분석하기 위해 아름다운 수프를 어떻게 사용합니까?Mar 10, 2025 pm 06:54 PM

이 기사에서는 HTML을 구문 분석하기 위해 파이썬 라이브러리 인 아름다운 수프를 사용하는 방법을 설명합니다. 데이터 추출, 다양한 HTML 구조 및 오류 처리 및 대안 (SEL과 같은 Find (), find_all (), select () 및 get_text ()와 같은 일반적인 방법을 자세히 설명합니다.

파이썬의 이미지 필터링파이썬의 이미지 필터링Mar 03, 2025 am 09:44 AM

시끄러운 이미지를 다루는 것은 특히 휴대폰 또는 저해상도 카메라 사진에서 일반적인 문제입니다. 이 튜토리얼은 OpenCV를 사용 하여이 문제를 해결하기 위해 Python의 이미지 필터링 기술을 탐구합니다. 이미지 필터링 : 강력한 도구 이미지 필터

파이썬의 병렬 및 동시 프로그래밍 소개파이썬의 병렬 및 동시 프로그래밍 소개Mar 03, 2025 am 10:32 AM

데이터 과학 및 처리가 가장 좋아하는 Python은 고성능 컴퓨팅을위한 풍부한 생태계를 제공합니다. 그러나 Python의 병렬 프로그래밍은 독특한 과제를 제시합니다. 이 튜토리얼은 이러한 과제를 탐구하며 전 세계 해석에 중점을 둡니다.

Tensorflow 또는 Pytorch로 딥 러닝을 수행하는 방법은 무엇입니까?Tensorflow 또는 Pytorch로 딥 러닝을 수행하는 방법은 무엇입니까?Mar 10, 2025 pm 06:52 PM

이 기사는 딥 러닝을 위해 텐서 플로와 Pytorch를 비교합니다. 데이터 준비, 모델 구축, 교육, 평가 및 배포와 관련된 단계에 대해 자세히 설명합니다. 프레임 워크, 특히 계산 포도와 관련하여 주요 차이점

파이썬에서 자신의 데이터 구조를 구현하는 방법파이썬에서 자신의 데이터 구조를 구현하는 방법Mar 03, 2025 am 09:28 AM

이 튜토리얼은 Python 3에서 사용자 정의 파이프 라인 데이터 구조를 작성하여 클래스 및 작업자 과부하를 활용하여 향상된 기능을 보여줍니다. 파이프 라인의 유연성은 일련의 기능을 데이터 세트, GE에 적용하는 능력에 있습니다.

파이썬 객체의 직렬화 및 사제화 : 1 부파이썬 객체의 직렬화 및 사제화 : 1 부Mar 08, 2025 am 09:39 AM

파이썬 객체의 직렬화 및 사막화는 사소한 프로그램의 주요 측면입니다. 무언가를 Python 파일에 저장하면 구성 파일을 읽거나 HTTP 요청에 응답하는 경우 객체 직렬화 및 사태화를 수행합니다. 어떤 의미에서, 직렬화와 사제화는 세계에서 가장 지루한 것들입니다. 이 모든 형식과 프로토콜에 대해 누가 걱정합니까? 일부 파이썬 객체를 지속하거나 스트리밍하여 나중에 완전히 검색하려고합니다. 이것은 세상을 개념적 차원에서 볼 수있는 좋은 방법입니다. 그러나 실제 수준에서 선택한 직렬화 체계, 형식 또는 프로토콜은 속도, 보안, 유지 보수 상태 및 프로그램의 기타 측면을 결정할 수 있습니다.

파이썬의 수학 모듈 : 통계파이썬의 수학 모듈 : 통계Mar 09, 2025 am 11:40 AM

Python의 통계 모듈은 강력한 데이터 통계 분석 기능을 제공하여 생물 통계 및 비즈니스 분석과 같은 데이터의 전반적인 특성을 빠르게 이해할 수 있도록 도와줍니다. 데이터 포인트를 하나씩 보는 대신 평균 또는 분산과 같은 통계를보고 무시할 수있는 원래 데이터에서 트렌드와 기능을 발견하고 대형 데이터 세트를보다 쉽고 효과적으로 비교하십시오. 이 튜토리얼은 평균을 계산하고 데이터 세트의 분산 정도를 측정하는 방법을 설명합니다. 달리 명시되지 않는 한,이 모듈의 모든 함수는 단순히 평균을 합산하는 대신 평균 () 함수의 계산을 지원합니다. 부동 소수점 번호도 사용할 수 있습니다. 무작위로 가져옵니다 수입 통계 Fracti에서

See all articles

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전