ブログに戻る

Djangoモデルの作成:チュートリアル

Djangoモデルの作成:チュートリアル

Django は、安全でメンテナンスしやすいWebサイトやWebアプリを迅速に開発するための、よく知られたWebフレームワークです。Python を使用して構築されたDjangoは、Web開発を簡素化し、毎回車輪の再発明をすることなく、アプリの作成により多くの時間と集中力を割くことができます。Djangoは、堅牢な公式ドキュメント、優れたコミュニティサポート、そして多くの無料および有料のサポートを備えた、無料のオープンソースプロジェクトです。

このガイドでは、Djangoモデルの作成について深く掘り下げていきます。 Djangoにおいて、モデルはデータに関する情報の重要なソースです。モデルは、保存されるデータのフィールドと動作を記述します。Djangoはモデルを使用して、ORM(オブジェクト関係マッピング)を用いてデータベーステーブルを生成します。これらはモデルとも呼ばれます。

前提条件

ここではUnixベースのオペレーティングシステム、好ましくはテスト済みのシステムである Ubuntu 20.04 クラウドサーバー を使用します。同様の環境でDjangoをセットアップしたい場合は、チュートリアル「Ubuntu 20.04にDjangoをインストールし、開発環境をセットアップする方法.”

ステップ 1. Python開発環境

DjangoはPythonで構築されています。そのため、Pythonアプリを操作するために必要なすべてのツールを備えた、堅牢なPython開発環境が必要です。これについては、すでに専用のガイドで説明しています。ここでは、簡単なデモンストレーションを行います。

まず、ターミナルを起動して次のコマンドを実行します。

次に、Pythonのパッケージマネージャーである pip – をインストールします。

その後、いくつかの追加の開発パッケージをインストールします。

Django Models 1

仮想環境を構築するには、Pythonの venv モジュールも必要です。

ステップ 2. MySQLサーバーのインストール

MySQLは、人気のある関係データベース管理システムです。オープンソースで安定しており、機能が豊富です。Djangoアプリのデータベースサーバーとして MySQL を使用します。APTを使用してMySQLをインストールします。

次に、インストールを確認します。

Django Models 2

これはデフォルトのオプションを使用したMySQLの最小限のセットアップにすぎません。詳細なガイドについては、MySQLのインストールと設定.

ステップ 3. Djangoアプリのセットアップ

これでDjangoアプリを作成する準備が整いました。Djangoのさらに詳細なデモンストレーションに関心がある場合は、チュートリアル「Ubuntu 20.04へのDjango Webフレームワークのインストール.”

次に、アプリ専用のディレクトリを作成します。ディレクトリ名はプロジェクト名を反映したものにする必要があります。

プロジェクトディレクトリ内で、venv モジュールを使用してPython仮想環境を作成します。

仮想環境を有効化します。

Django Models 3

を使用してDjangoをインストールします。 pip:

次に、django-admin コマンドを使用して、新しいDjangoプロジェクトを作成します。

django-admin

ステップ 4. Djangoアプリの設定

Djangoアプリには、すべてのデフォルト設定が含まれています。目的を達成するために、いくつかの調整を行う必要があります。

まず、設定ファイル settings.py:

py

TIME_ZONE

'<time_zone>'

ALLOWED_HOSTS

'<allowed_host_ip_or_domain_name >'

Django Models 4

migrate

python manage.py

ステップ 5. DjangoアプリをMySQLに接続する

MySQLに接続するには、Djangoと互換性のある追加のPythonコネクタライブラリが必要です。ここでは、mysqlclient.

まず、必要なパッケージがインストールされていることを確認します。

python3-dev

次に、以下をインストールします: mysqlclient:

  • 専用データベースの作成

アプリ用に、専用のデータベースとデータベースユーザーを作成する必要があります。MySQLシェルを以下として起動します: root:

sudo mysql -u rootDjangoアプリ用の専用データベースを作成します:

次に、Djangoアプリ用の専用データベースユーザーを作成します:

最後に、専用ユーザーに専用データベースに対するすべての権限を付与します:

GRANT ALL ON
  • MySQLを使用するためのDjango設定の変更

次に、MySQLをデータベースサーバーとして使用できるように、Djangoの設定をいくつか調整する必要があります。テキストエディタで以下を開きます: settings.py をテキストエディタで開きます:

下にスクロールして、DATABASES セクションに移動し、次のコードを貼り付けます:

DATABASES

次に、必要なデータベースの資格情報が含まれるようにMySQL設定ファイルを編集します:

ファイルの末尾に次のブロックを追加します:

Django Models 5

変更を有効にするためにMySQLを再起動します:

Step 6. Creating a Django Model

これで、Djangoプロジェクト内に新しいモデルを作成する準備が整いました。仮想環境をアクティベートします:

この場所で、Djangoに新しいアプリを作成するように指示します:

作成後、ファイルツリーは以下のようになります。ここで、ファイルmodels.py には、カスタムDjangoモデルのコードが含まれます:

Django Models 6

ファイルの現在の内容を確認します:

cat models.py

デモンストレーションとして、Post という名前のブログ投稿用モデルを作成します。これには以下のフィールドが含まれます:

  • title: ブログ投稿のタイトル。
  • slug: ウェブページの有効なURLを保存および生成します。
  • content: ブログ投稿の本文。
  • created_on: 投稿の作成日。
  • author: 投稿を作成したユーザー。

ファイルmodels.py をテキストエディタで開きます:

モデルに必要なAPIをいくつかインポートしましょう。デフォルトでは、models APIがインポートされます。また、スラッグを生成するためのslugify API、認証用のUser 、そしてより柔軟で優れたURL作成のためのreverse も必要になります:

次に、Post というクラスメソッドを追加します。これには、title, slug, content, created_on, および author:

URLの生成と投稿の保存を行う機能が必要です。これは、ユニークな投稿に対応するユニークなリンクを生成するために重要です:

次のセクションでは、投稿の並び替えとウェブページへの表示についてモデルに指示します。インナークラスである Meta を使用してロジックを記述します。これには、データベースのフィールド定義に関係のない追加のモデルロジックが含まれます:

最後に、このファイルに Comment モデルの機能を追加します。これには、Comment クラスを、models.Model をシグネチャとして追加する必要があります。これには以下のデータベースフィールドが含まれます:

  • name: コメント投稿者の名前。
  • email: コメント投稿者のメールアドレス。
  • text: コメント自体の内容。
  • post: コメントが投稿された記事。
  • created_on: コメントが作成された日時。

コードは以下のようになります:

この時点で、models.py ファイルは以下のようになります:

models.py

最後に、ファイルを保存してエディタを閉じます。

ステップ 7. Django設定の更新

モデルが作成されました。しかし、モデルを動作させるにはいくつかの設定ファイルを調整する必要があります。settings.py 内で、以下の項目の下にモデルを追加する必要があります:INSTALLED_APPS.

テキストエディタで settings.py を開きます:

次のセクションの下に新しいモジュールを登録します:INSTALLED_APPS:

INSTALLED_APPS

ファイルを保存してエディタを閉じます。

ステップ 8. 変更のマイグレーション

必要なモデルをすべて追加したので、次のステップはこれらの変更を適用することです。DjangoはこれらのスキーマをMySQLデータベースに適用します。

次のコマンドを実行すると、必要なすべてのマイグレーションファイルが生成されます。出力には、プロジェクトディレクトリ内におけるそれらのファイルの場所が表示されます:

makemigrations

次のコマンドを実行すると、既存のすべてのマイグレーションが一覧表示されます:

Django Models 6

なお、0001_initial 以外のすべてのマイグレーションにマークがついています。このマイグレーションは、モデル Post および Comment の一部として作成されたものです。.

次のコマンドを実行すると、マイグレーションを実行するためにDjangoが実行するSQLクエリが表示されます:

sample_app

あとはマイグレーションを適用するだけです。これらのマイグレーションによって、変更がデータベースに書き込まれます:

migrate

ステップ 9. 変更の検証

変更を検証するために、MySQLデータベースを確認してみましょう。DjangoユーザーとしてMySQLシェルを起動します。

次に、現在アクティブなデータベースをDjangoアプリのデータベースに変更します。

データベースからすべてのテーブルを一覧表示します。

最後に、いずれかのテーブルの内容を確認するには、DESCRIBE クエリを使用します。

Django Models 7

MySQLにおけるDjango의制限事項

DjangoアプリのデータベースサーバーとしてMySQLを使用する場合、いくつかの注意点があります。

  • スキーマ変更プロセスに関するトランザクションのサポートはあまりありません。つまり、マイグレーションが失敗した場合、別のマイグレーションを試す前に、すべての変更を手動で元に戻す必要があります。失敗したマイグレーションが実行される前の時点にロールバックする方法はありません。
  • ほとんどのスキーマ変更プロセスにおいて、MySQLはテーブルを完全に書き換えます。状況によっては、非常に時間がかかることがあります。最悪の場合、時間計算量は追加される行数または削除される列数に比例します。Djangoの公式ドキュメントによると、100万行あたり1分かかる可能性があります。
  • MySQLは、カラム、テーブル、およびインデックスの名前の長さに文字数制限を設けています。また、すべてのカラムとインデックスカバーの合計サイズにも制限があります。Djangoは制限を超える可能性があります。MySQL以外のいくつかのバックエンドは、Djangoの高い制限に対応できます。

そのため、選択肢を慎重に検討し、適切なものを選択することを強くお勧めします。

おわりに

このガイドでは、既存のDjangoアプリにモジュールを追加する方法を説明しました。アプリのバックエンドとしてMySQLを使用しました。また、モデル、マイグレーションの仕組み、DjangoがモデルをMySQLデータベーステーブルに変換する方法など、Djangoのいくつかの重要な概念についても紹介しています。

ハッピーコンピューティング!

author

Hark Labs

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。