Python-web-development-libraries-django-framework

提供:Dev Guides
移動先:案内検索

Djangoフレームワーク

この章では、Django Frameworkについて詳しく説明します。

Djangoは、Webアプリケーションの構築に使用されるMVT Webフレームワークです。 巨大なDjango Webフレームワークには非常に多くの「バッテリーが含まれています」が付属しているため、開発者はすべてがどのように連携するかについて多くの場合驚かれます。 非常に多くのバッテリーを追加する背後にある原則は、後者を個別のライブラリとして追加する代わりに、フレームワーク自体に共通のWeb機能を持たせることです。

Djangoフレームワークの人気の背後にある主な理由の1つは、巨大なDjangoコミュニティです。 コミュニティは非常に巨大であるため、認証、承認、本格的なDjangoベースのCMSシステム、eコマースアドオンなどを含むサードパーティパッケージを開発するために、すべてのコーナーの開発者が別のWebサイトを設けました。 あなたが開発しようとしているものが既に誰かによって開発されている可能性が高く、それをあなたのプロジェクトに引き込む必要があるだけです。

なぜDjangoを使用する必要があるのですか?

Djangoは、開発者がWebサイトを迅速かつクリーンで実用的なデザインで開発することを奨励するような方法で設計されています。 物事を成し遂げるためのDjangoの実用的なアプローチは、群衆から際立っているところです。

ソーシャルメディアウェブサイトなど、高度にカスタマイズ可能なアプリを構築することを計画している場合、Djangoは検討すべき最高のフレームワークの1つです。 Djangoの強みは、ユーザー間の相互作用、またはさまざまな種類のメディアを共有する能力にあります。 djangoの大きな利点の1つは、大規模なコミュニティベースのサポートを利用できることです。これにより、高度にカスタマイズ可能なサードパーティがアプリケーションでプラグインをすぐに使用できます。

以下は、Web開発にDjangoを選択するトップ10の理由です-

Python

Pythonは、そのシンプルな言語構成、フロー構造、および簡単な構文のために、間違いなく最も学習しやすいプログラミング言語の1つです。 汎用性があり、多くのデバイスに組み込まれたWebサイト、デスクトップアプリケーション、モバイルアプリケーションを実行し、一般的なスクリプト言語として他のアプリケーションで使用されます。

含まれている電池

Djangoには、URLルーティング、認証、オブジェクトリレーショナルマッパー(ORM)、テンプレートシステム、db-schema移行などの一般的な機能を構築するために不可欠な共通ライブラリが付属しています。

組み込みの管理者

Djangoには、モデル、ユーザー/グループの権限を処理したり、ユーザーを管理したりできる管理インターフェースが組み込まれています。 モデルインターフェイスが適切に配置されていれば、高度なデータベース機能を除くすべてのデータベース管理プログラムを別途用意する必要はありません。

邪魔にならない

Djangoアプリケーションを作成しても、ボイラープレートや不要な機能は追加されません。 必須のインポート、サードパーティのライブラリ、XML構成ファイルはありません。

スケーラブル

DjangoはMVCデザインパターンに基づいています。 これは、db(データベース)、バックエンド、フロントエンドコードなどのすべてのエンティティが個別のエンティティであることを意味します。 Djangoでは、サイトを構成する写真、ファイル、CSS、JavaScriptなどの静的メディアからコードを分離できます。

Djangoは、Webサーバー、キャッシュ、パフォーマンス管理、クラスタリング、およびバランシング用のサードパーティライブラリの完全なリストをサポートしています。 Djangoが提供する利点の1つは、ReSTやOAuthなどの主要な電子メールおよびメッセージングアプリケーションとサービスのサポートです。

バトルテスト済み

Djangoは2005年に最初にオープンソース化されました。 12年の成長の後、DjangoはニュースパブリッシングWebサイトを運営するだけでなく、Pinterest、Instagram、Disqus、Bitbucket、EventBrite、Zapierなどの主要なグローバル企業のすべてまたは一部も運営しています。 これにより、堅牢で信頼性の高いWebフレームワークとして機能します。

巨大なパッケージのサポート

その大規模なコミュニティサポートと巨大な開発者ネットワークのために、あなたがやろうとすることは以前に行われた可能性が高いです。 開発者の大規模な国際コミュニティは、プロジェクトをオープンソースパッケージとしてリリースすることでコミュニティに貢献しています。

これらのプロジェクトのそのようなリポジトリの1つがDjango Packageサイトです。 現在、Djangoパッケージには、3400を超えるリストと、Djangoプロジェクトで使用する再利用可能なDjangoアプリ、サイト、およびツールがリストされています。

活発に開発された

オープンソースプロジェクトに関連する最大のリスクの1つは、その持続可能性です。 それが長く続くかどうかはわかりません。

Djangoは12歳なので、このようなリスクはありません。 一貫性のあるリリース、新しい/より良いバージョン、アクティブなコミュニティは毎日成長しており、毎日コードベースを維持および改善するボランティアの貢献者の大規模なコアチームがいます。

安定したリリース

Djangoなどのオープンソースソフトウェアプロジェクトは、多くの場合、積極的に開発されており、多くの開発者が毎日開発およびテストしているため、競合するプロプライエタリソフトウェアよりも安全です。 ただし、オープンソースソフトウェアプロジェクトの欠点は、商業的に実行可能な開発に対する安定したコードベースがないことです。

Djangoでは、ソフトウェアの長期サポート(LTS)バージョンと、以下の画像に示すように定義されたリリースプロセスがあります-

安定版リリース

ファーストクラスのドキュメント

最初のリリースから、Django開発者は適切な包括的なドキュメントが利用可能でなければならず、チュートリアルが簡単に理解できるようにしました。

Djangoを使用しているのは誰ですか?

Djangoのユニークな強さにより、Djangoフレームワークの上にPythonで構築された人気のあるWebサイトが複数あります。 以下は、Djangoに基づいて完全または部分的に構築された主要なサイトの一部です。

Disqus

これは、世界中で最も好まれているブログコメントホスティングサイトの1つです。 WordPressや他の多くのような人気のあるCMS(コンテンツ管理システム)とDisqusを使用して簡単に統合できます。 5,000万人を超えるユーザーベースを処理するDjangoは、サイト所有者を満足させ、コミュニティに手を差し伸べることができます。

Disqus

タマネギ

風刺的な新聞のオンライン会場を提供するOnionウェブサイト、Djangoはそのフレームワークを提供します。

タマネギ

Bitbucket

Bitbucketは、バージョン管理リポジトリホスティングサービスであるGitHubに似ています。 BitbucketとGitHubの唯一の違いは、Bitbucketが水銀リポジトリをホストするのに対して、GitHubはgitリポジトリをホストすることです。 何百万人ものユーザーがBitbucketに関連付けられており、bitbucketが提供するすべてのサービス(レポの作成、コードのプッシュ、共同作業者の追加、コミット、プルリクエストなど)は安定している必要があります。 Djangoはbitbucketサイトの運営を担当しています。

Bitbucket

インスタグラム

Instagramは、すべての友人と写真やビデオを共有するのが大好きな人のために特に構築されたソーシャルネットワーキングアプリです。 現在、Instagramには多くの有名人がいますので、彼らのファンに近づきます。 DjangoフレームワークもInstagramを実行しています。

Instagram

Mozilla Firefox

Google Chromeに次いで世界で2番目に広く使用されているブラウザはMozillaブラウザです。 現在、MozillaのヘルプページはDjangoフレームワークで構築されています。

Mozilla Firefox

Pinterest

世界中の何百万人ものユーザーがPinterestから新しいアイデアやインスピレーションを発見しています。 Pinterestは、Djangoフレームワークを使用して(要件に応じて変更を加えて)実行しています。

Pinterest

NASA

米国航空宇宙局の公式ウェブサイトは、数百万人のユーザーがプレミア代理店が提供するニュース、画像、ビデオ、ポッドキャストを訪れたりチェックしたりする場所です。 Djangoは、NASAの公式Webサイトの特定の部分を開発しています。

Nasa

ワシントンポスト

世界に影響力のある新聞が1つあれば、それは確かにワシントンポストです。 Washington PostのWebサイトは、日刊紙に付随する人気の高いオンラインニュースソースです。 その膨大なビューとトラフィックは、Django Webフレームワークによって簡単に処理されています。

ワシントンポスト

Redditギフト

大人気のRedditウェブサイトは、Reddit Giftsと呼ばれるオンラインの匿名のギフト交換およびミートアッププラットフォームを立ち上げました。 このサイトは世界中のユーザーを結び付け、ユーザー間のギフト交換を促進します。 Django Webフレームワークはその機能を強化しています。

Redditギフト

プレジ

Preziは、Djangoフレームワーク上に構築されたMicrosoft PowerPointのクラウドベースの代替です。 このサイトは、操作および拡大/縮小できる仮想キャンバスを提供します。 これにより、個々のスライドではなく、プレゼンテーションの全体ビューが提供されます。

Prezi

Djangoプロジェクトとアプリのインストールと作成

Djangoをインストールする前に、Pythonがインストールされていることを確認する必要があります。 virtualenvを使用していると仮定すると、単純なpipインストールdjangoで十分です。

仮想環境とDjangoのインストール

以下は、Windows環境に仮想環境とDjangoをインストールするプロセスです-

仮想環境

Djangoが適切にインストールされているかどうかを確認するには、次のコードを入力します-

Djangoのインストール

Djangoプロジェクトの作成

インストールが完了したら、Djangoプロジェクトを作成する必要があります。

Windowsマシンで以下のコマンドを実行すると、次のdjangoプロジェクトが作成されます-

*django-admin startproject my_project_name*

Django Project Django Projectの作成

dirと入力すると、上記のように1つの新しいファイルと1つの新しいディレクトリが表示されます。

*manage.py* -manage.pyはコマンドラインで実行可能なPythonファイルで、django-adminの単なるラッパーです。 これは、その名前に暗示されているプロジェクトの管理にも役立ちます。

これにより、プロジェクトの構成ルートを表すmyFirstDjangoProject内に myFirstDjangoProject というディレクトリが作成されました。 さらに深く掘り下げてみましょう。

Djangoの構成

myFirstDjangoProjectディレクトリーを「構成ルート」と呼ぶことにより、このディレクトリーには、一般にDjangoプロジェクトを構成するために必要なファイルが保持されます。 このディレクトリ以外のほとんどすべては、プロジェクトのモデル、ビュー、ルートなどに関連付けられた「ビジネスロジック」のみに焦点を合わせます。 プロジェクトを接続するすべてのポイントがここにつながります。

Djangoの設定

  • init.py-これは空で、ディレクトリをインポート可能なPythonパッケージに変更します。
  • settings.py-名前が示すように、ほとんどの構成アイテムが設定される場所です。
  • urls.py-URLはurls.pyで設定されます。 これにより、このファイルにプロジェクトのすべてのURLを明示的に記述する必要はありません。 ただし、URLが宣言されている場所をDjangoに伝える必要があります(つまり、urls.pyの他のURLをリンクする必要があります)。
  • Wsgi.py-これは実稼働環境でのアプリケーションを支援するためのものであり、Flask、Tornado、Pyramidなどの「アプリ」オブジェクトを公開する他のアプリケーションに似ています。

設定をする

settings.pyの内部を見てみると、そのかなりのサイズが明らかになります。これらは単なるデフォルトです。 他に注意する必要があるのは、静的ファイル、データベース、メディアファイル、クラウド統合、またはDjangoプロジェクトを構成できる他の多数の方法です。 settings.pyファイルで言及されているいくつかのポイントを理解しましょう-

*BASE_DIR* -これはファイルの検索に役立ちます。 setting.pyファイル内で、BASE_DIRパラメーターはベースディレクトリへの絶対パスを設定します。
*SECRET_KEY* -ハッシュを作成するために使用されます。 一般に、cookie、セッション、csrf保護、および認証トークンにsecret_keyを使用しました。
*DEBUG* -開発モードまたは本番モードで実行されているプロジェクトに設定できます。
*ALLOWED_HOSTS* -アプリケーションが提供されるホスト名のリストを提供します。 開発モードでは、設定はオプションです。ただし、実稼働マシンでは、Djangoプロジェクトを設定する必要があります。
*INSTALLED_APPS* -Djangoプロジェクトで現在インストールおよび実行されているDjango「アプリ」のリストです。 組み込みのDjangoは、次の6つのインストール済みアプリを提供します-
  • django.contrib.admin

  • django.contrib.auth

  • django.contrib.

  • django.contrib.sessions

  • django.contrib.messages

  • django.contrib.staticfiles

    *MIDDLEWARE* -Djangoプロジェクトの実行を支援します。 これは、djangoの要求/応答処理にフックするPythonクラスです。
    *TEMPLATES* -フロントエンドでのドキュメントの表示方法を定義します。 Djangoテンプレートは、テキストベースのフォーマットを作成するために使用されます。
    *WSGI_APPLICATION* -設定したサーバーは、WSGIファイルの場所を知っている必要があります。 外部サーバーを使用している場合は、独自の設定を確認します。 デフォルトでは、wsgi.py内のオブジェクトを指します。
    *DATABASES* -Djangoプロジェクトが現在アクセスしているデータベースに設定します。 デフォルトのデータベースを設定することは必須です。 選択したデータベースを設定する場合、HOST、USER、PASSWORD、PORT、データベースNAME、適切なENGINEなど、データベースに関連するいくつかのことに言及する必要があります。
    *STATIC_URL* -STATIC_ROOTにある静的ファイルを参照するときに使用するURLです。 デフォルトでは、なしです。

ただし、静的ファイルのパスを追加する必要がある場合があります。 ファイルの終わりまで行き、STATIC_URLエントリのすぐ下に、以下に示すようにSTATIC_ROOTという新しいエントリを追加します-

myFirstDjangoProject/settings.py

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR、「静的」)

データベースのセットアップ

サイトの日付を保存できるさまざまなデータベースソフトウェアがあります。 デフォルトのsqlite3を使用します。

これは、 myFirstDjangoProject/settings.py の以下の所定の部分で既に設定されています-

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.sqlite3',
      'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   }
}

ブログ用のデータベースを作成するには、コンソールで次を実行します- python manage.py migrate (manage.pyファイルを含むmyFirstDjangoProjectディレクトリにいる必要があります。

すべてがうまくいけば、次の出力が得られます-

データベースのセットアップ

Webサーバーの起動

manage.pyファイルを含むディレクトリにいる必要があります。 コンソールで、次のようにpython manage.py runserverを実行してWebサーバーを起動できます-

Webサーバー

あとは、Webサイトが実行されていることを確認するだけです。 ブラウザ(Firefox、Chrome、Safari、Internet Explorer、または使用するもの)を開き、このアドレスを入力します-

*http://127.0.0.1:8000/*

or

*http://localhost:8000/* #ウェブサーバーはローカルマシンでのみ実行されているため。

おめでとうございます。 最初のWebサイトを作成し、Webサーバーを使用して実行しました!

Webサーバーの起動

Webサーバーの実行中は、追加のコマンドを入力するための新しいコマンドラインプロンプトは表示されません。 端末は次のテキストを受け入れますが、新しいコマンドは実行しません。 これは、着信要求をリッスンするためにWebサーバーが継続的に実行されるためです。

Djangoモデル

ブログのすべての投稿を保存するDjangoモデルを作成しようとしています。 しかし、それが機能することを確認するには、オブジェクトについて学ぶ必要があります。

オブジェクト

オブジェクトは、プロパティとアクションのコレクションです。 例でこれを理解しましょう。 猫をモデル化する場合、色、年齢、気分(良い/悪い/眠い)、所有者などのプロパティを持つCatというオブジェクトを作成します。

その後、猫はいくつかのアクションを持っています:ゴロゴロ、スクラッチまたはフィード。

Cat
--------
color
age
mood
owner
purr()
scratch()
feed(cat_food)
CatFood
--------
taste

そのため、基本的に、プロパティ(オブジェクトプロパティと呼ばれる)とアクション(メソッドと呼ばれる)を使用して、コードで実際のことを記述しようとしています。

ブログを作成する際には、テキストコンテンツとタイトルが必要です。 著者の名前、作成日、出版日も必要です。

だから私たちのブログには次のオブジェクトがあります-

Post
--------
title
text
author
created_date
published_date

また、その投稿を公開するメソッドが必要です。 オブジェクトが何であるかがわかったので、ブログ投稿用のDjangoモデルを作成できます。

モデルはDjangoの特別な種類のオブジェクトであり、データベースに保存されます。 データをSQLiteデータベースに保存します。

アプリケーションを作成する

すべてを明確にするために、プロジェクト内に別のアプリケーションを作成します。 以下では、下記の簡単なコマンドを実行して、ブログWebアプリケーションの作成を試みます。

ここで、新しいmyBlogディレクトリが作成され、そこに多数のファイルが含まれていることがわかります。 私たちのプロジェクトのディレクトリとファイルは次のようにする必要があります-

アプリケーションの作成

アプリケーションを作成したら、それを使用するようDjangoに指示する必要もあります。 これはmyFirstDjangoProject/settings.pyファイルで行います。

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'myBlog',
]

ブログ投稿モデルの作成

*myBlog/models.py* ファイルで、Modelsと呼ばれるすべてのオブジェクトを定義します。これは、ブログ投稿を定義する場所です。

myBlog/models.pyを開き、すべてを削除して、次のようにコードを記述しましょう。

モデルの投稿

まず、fromまたはimportを呼び出して、他のファイルからいくつかの機能をインポートします。 したがって、これを使用すると、すべてのファイルに同じものをコピーして貼り付ける代わりに、 fromおよびimport で一部を含めることができます。

  • class Post(models.Model)*-この行は、モデルを定義します(オブジェクトです)。
  • classは、オブジェクトを定義していることを示す特別なキーワードです。
  • Postはモデルの名前です。 クラス名は常に大文字で始めてください。
  • models.Modelは、PostがDjangoモデルであることを意味するため、Djangoはデータベースに保存する必要があることを認識しています。

ここで、上記で定義したプロパティ、title、text、created_date、published_date、authorについて説明します。 そのためには、各フィールドのタイプを定義する必要があります。

  • models.CharField-これは、限られた文字数でテキストを定義する方法です。

  • Models.TextField-これは制限のない長いテキスト用です。

  • Models.DateTimeField-これは日付と時刻用です。

  • Models.ForeignKey-これは別のモデルへのリンクです。

    *def* で関数/メソッドを定義し、publishがメソッドの名前です。

メソッドはしばしば何かを返します。 ここでstr()を呼び出すと、Postタイトル付きのテキスト(文字列)が取得されます。

データベース内のモデルのテーブルを作成する

最後のステップは、新しいモデルをデータベースに追加することです。 まず、モデルに変更を加えたことをDjangoに理解させる必要があります。 以下に示すように、コマンド python manage.py make migrations myBlog を使用して、コンソールウィンドウで同じ操作を行います。

移行

次に、Djangoはデータベースに適用する必要がある移行ファイルを準備します。 コンソールで次のように入力できます: python manage.py migrate myBlog そして出力は次のようになります-

テーブルの作成

Postモデルがデータベースに追加されました。

Django管理者

モデル化したばかりの投稿を追加、編集、削除するには、Django adminを使用します。

だから私たちは *myBlog/admin.pyファイルを開き、この中に以下の内容を入れてみましょう-

Django Admin

まず、前の章で定義したPostモデルをインポート(インクルード)します。 管理ページでモデルを表示するには、admin.site.register(Post)でモデルを登録する必要があります。

管理サイトにログインするには、スーパーユーザー(サイト上のすべてを制御できるユーザーアカウント)を作成する必要があります。 そのため、Webサーバーを停止し、コマンドラインpython* manage.py createsuperuser *を入力して、Enterキーを押します。

ユーザーの作成

それでは、Postモデルを見てみましょう。 python manage.py run serverをコンソールで実行して、Webサーバーを実行することを忘れないでください。 ブラウザに移動して、アドレスを入力します* [[1]] 次に、以下のようにDjango管理ダッシュボードが表示されます-

サーバーの実行

投稿に移動して、少し試してください。 多くのブログ投稿やコンテンツをどこからでも追加できます。 あなたのブログは次のようになります-

Django管理

これはDjangoの概要にすぎず、数行のコードでブログを作成できます。