ホームページ > バックエンド開発 > Python チュートリアル > Django のアーキテクチャを理解する: MTV パターン。

Django のアーキテクチャを理解する: MTV パターン。

Mary-Kate Olsen
リリース: 2024-10-18 20:16:30
オリジナル
834 人が閲覧しました

Understanding Django’s Architecture: The MTV Pattern.

Django は、Web 開発の MTV (Model-Template-View) パターンに従います。各コンポーネントの内訳は次のとおりです:

モデル: データ構造を定義し、データベースとの対話を処理することで、SQL クエリを手動で作成せずにデータの保存と取得を可能にします。

テンプレート: HTML のレンダリングとユーザーへのデータの表示を担当します。動的コンテンツを表示するには、Django テンプレート言語 (DTL) と混合した HTML を作成します。

ビュー: ビジネス ロジック層として機能します。モデルとテンプレートを接続し、ユーザーのリクエストを処理し、モデルと対話して、応答 (多くの場合、テンプレートからレンダリングされた HTML) を返します。

Django のリクエストとレスポンスのサイクルの仕組み:

  • ユーザーが (URL 経由で) Web ページをリクエストします。
  • Django は URL をビューと照合します。
  • ビューはモデルからデータを取得し、それをテンプレートに渡します。
  • テンプレートはデータを HTML にレンダリングし、それを応答としてユーザーに送り返します。

ステップ 1: Django で新しいアプリを作成します.
(前の記事で説明したように) Django をセットアップしたら、プロジェクトに新しいアプリを作成しましょう。

次のコマンドを実行します:

cd mysite
python3 manage.py startapp core
ログイン後にコピー
ログイン後にコピー

これにより、mysite プロジェクト内に core という名前のアプリが作成されます。ファイル構造は次のようになります:

.
├── core
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── manage.py
└── mysite
    ├── asgi.py
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
ログイン後にコピー
ログイン後にコピー

ステップ 2: アプリを設定ファイルに登録します.
Django に新しいアプリを認識させるには、mysite/settings.py の INSTALLED_APPS にそのアプリを追加する必要があります:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'core',  # add this line
]
ログイン後にコピー

ステップ 3: 基本ビューを作成する.
「Hello, World!」を返す単純なビューを作成してみましょう。メッセージ。

コア アプリ内で views.py を開き、次のコードを追加します:

from django.http import HttpResponse

def learn(request):
    return HttpResponse("Hello, World!")
ログイン後にコピー

ステップ 4: URL をビューにマップします.
URL 経由でこのビューにアクセスするには、core/urls.py ファイルでマップする必要があります。このファイルが存在しない場合は作成し、以下を追加します:

from django.urls import path
from . import views

urlpatterns = [
    path('learn/', views.learn, name='learn'),
]
ログイン後にコピー

次に、メインの mysite/urls.py ファイルにコア アプリの URL を含めます。

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('core/', include('core.urls')),  # include the core app URLs
]

ログイン後にコピー

ここで、サーバーを実行して http://127.0.0.1:8000/core/learn/ にアクセスすると、「Hello, World!」が表示されるはずです。表示されます。
ステップ 5: テンプレートを作成してレンダリングする

from django.shortcuts import render

def learn(request):
    context = {'name': 'Django'}
    return render(request, 'hello.html', context)

ログイン後にコピー

このビューは変数 (名前) を hello.html というテンプレートに渡します。
ステップ 6: テンプレート ディレクトリと HTML ファイルを作成します.
コア アプリで、テンプレート フォルダーと hello.html ファイルを作成します。

mkdir core/templates
touch core/templates/hello.html
ログイン後にコピー

hello.html 内に次の HTML コードを追加します

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello Template</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>
ログイン後にコピー

学習 URL に再度アクセスすると、「Hello, Django!」と表示されるはずです。ブラウザで。

ステップ 7: 基本モデルを作成する.
ブログ投稿を保存するための単純な Post モデルを作成しましょう。

core/models.py に次のコードを追加します:

cd mysite
python3 manage.py startapp core
ログイン後にコピー
ログイン後にコピー

このポストモデルには、タイトルとコンテンツという 2 つのフィールドがあります。 __str__ メソッドは、Django 管理者またはシェルで Post オブジェクトがタイトルとともに表示されるようにします

ステップ 8: モデルをデータベースに適用する.
データベースに対応するテーブルを作成するには、次のコマンドを実行します:

.
├── core
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── manage.py
└── mysite
    ├── asgi.py
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
ログイン後にコピー
ログイン後にコピー

Django は Post モデルのデータベース テーブルを作成します。

これらの手順に従うことで、モデル、ビュー、テンプレートを備えた基本的な Django アプリが正常に作成されました。ユーザー入力の処理、デザインの改善、アプリのインタラクティブ化などの機能を追加することで、この基盤を拡張できるようになりました。

以上がDjango のアーキテクチャを理解する: MTV パターン。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート