Django API プロジェクトのセットアップ
この記事から何を期待できるでしょうか?
さて、コーディングを始めましょう!これは、Alive Diary のアイデアを紹介し、Gemini が魂になり得ることを証明した後の最初のコーディング記事です。Django を使用してバックエンドのコーディングを開始します。
整理のため、このプロジェクトについては複数の記事に分けて説明しますので、この記事は
- プロジェクトのセットアッププロセスについて説明します。
- 使用されているライブラリと、それらを使用する理由を紹介します。
- アプリを作成し、その背後にあるロジックを説明します。
読者を飽きさせないように、できるだけ多くの詳細を説明するよう努めますが、Python と Django のいくつかの側面についてはよく知っていることを期待しています。
ソース コードの最終バージョンは https://github.com/saad4software/alive-diary-backend にあります
シリーズの順序
興味があれば過去の記事をチェックしてください!
- ゼロから作る AI プロジェクト、アイデア、生きた日記
- Google AI Studio で実現可能であることを証明してください
- 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 required.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、および .env ファイルから変数をロードするload_dotenv を設定しました。
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 アプリと、3 つのアプリ、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
残りのフレームワーク ライブラリのデフォルトの認証クラスとして単純な 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 Studio から 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 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。

PythonListSarePartOfThestAndardarenot.liestareBuilting-in、versatile、forStoringCollectionsのpythonlistarepart。

Pythonを1日2時間学ぶだけで十分ですか?それはあなたの目標と学習方法に依存します。 1)明確な学習計画を策定し、2)適切な学習リソースと方法を選択します。3)実践的な実践とレビューとレビューと統合を練習および統合し、統合すると、この期間中にPythonの基本的な知識と高度な機能を徐々に習得できます。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。
