この記事から何を期待できるでしょうか?
さて、コーディングを始めましょう!これは、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 サイトの他の関連記事を参照してください。

このチュートリアルでは、Pythonを使用してZIPFの法則の統計的概念を処理する方法を示し、法律の処理時にPythonの読み取りおよび並べ替えの効率性を示します。 ZIPF分布という用語が何を意味するのか疑問に思うかもしれません。この用語を理解するには、まずZIPFの法律を定義する必要があります。心配しないでください、私は指示を簡素化しようとします。 ZIPFの法則 ZIPFの法則は単に意味します。大きな自然言語のコーパスでは、最も頻繁に発生する単語は、2番目の頻繁な単語のほぼ2倍の頻度で表示されます。 例を見てみましょう。アメリカ英語の茶色のコーパスを見ると、最も頻繁な言葉は「thであることに気付くでしょう。

この記事では、Pythonライブラリである美しいスープを使用してHTMLを解析する方法について説明します。 find()、find_all()、select()、およびget_text()などの一般的な方法は、データ抽出、多様なHTML構造とエラーの処理、および代替案(SEL

ノイズの多い画像を扱うことは、特に携帯電話や低解像度のカメラの写真でよくある問題です。 このチュートリアルでは、OpenCVを使用してPythonの画像フィルタリング手法を調査して、この問題に取り組みます。 画像フィルタリング:強力なツール 画像フィルター

データサイエンスと処理のお気に入りであるPythonは、高性能コンピューティングのための豊富なエコシステムを提供します。ただし、Pythonの並列プログラミングは、独自の課題を提示します。このチュートリアルでは、これらの課題を調査し、グローバルな承認に焦点を当てています

この記事では、深い学習のためにTensorflowとPytorchを比較しています。 関連する手順、データの準備、モデルの構築、トレーニング、評価、展開について詳しく説明しています。 特に計算グラップに関して、フレームワーク間の重要な違い

このチュートリアルでは、Python 3にカスタムパイプラインデータ構造を作成し、機能を強化するためにクラスとオペレーターのオーバーロードを活用していることを示しています。 パイプラインの柔軟性は、一連の機能をデータセットに適用する能力にあります。

Pythonオブジェクトのシリアル化と脱介入は、非自明のプログラムの重要な側面です。 Pythonファイルに何かを保存すると、構成ファイルを読み取る場合、またはHTTPリクエストに応答する場合、オブジェクトシリアル化と脱滑り化を行います。 ある意味では、シリアル化と脱派化は、世界で最も退屈なものです。これらすべての形式とプロトコルを気にするのは誰ですか? Pythonオブジェクトを維持またはストリーミングし、後で完全に取得したいと考えています。 これは、概念レベルで世界を見るのに最適な方法です。ただし、実用的なレベルでは、選択したシリアル化スキーム、形式、またはプロトコルは、プログラムの速度、セキュリティ、メンテナンスの自由、およびその他の側面を決定する場合があります。

Pythonの統計モジュールは、強力なデータ統計分析機能を提供して、生物統計やビジネス分析などのデータの全体的な特性を迅速に理解できるようにします。データポイントを1つずつ見る代わりに、平均や分散などの統計を見て、無視される可能性のある元のデータの傾向と機能を発見し、大きなデータセットをより簡単かつ効果的に比較してください。 このチュートリアルでは、平均を計算し、データセットの分散の程度を測定する方法を説明します。特に明記しない限り、このモジュールのすべての関数は、単に平均を合計するのではなく、平均()関数の計算をサポートします。 浮動小数点数も使用できます。 ランダムをインポートします インポート統計 fractiから


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
