Django入門–入門とチュートリアル

開示: あなたのサポートはサイトの運営を維持するのに役立ちます!このページで推奨する一部のサービスについては、紹介料を稼ぎます.


DjangoはPythonで記述されたWebアプリケーションの迅速な開発フレームワークです。.

開発フレームワークはアプリケーションスケルトンであり、ソフトウェアをすばやく構築するための一連のツールと、ソフトウェアの構築方法についての意見が含まれています。.

フレームワークは、データベース接続、ユーザーログイン、セッション管理、リクエストルーティングなどの最も一般的な機能を提供することにより、「定型」コードを削減します。これらは、アプリの特定の目的に関係なく、ほとんどすべてのアプリケーションで必要であり、新しいプロジェクトごとに再設計する必要はありません.

開発フレームワークは、システムのアーキテクチャも提供します。フレームワークは、コードを整理する方法を決定するために時間とエネルギーを費やすのではなく(または、そうしないことで終わりのない問題が発生することなく)、機能を整理する正しい方法をフレームワークに持っているので、すぐに機能を作成できます。.

最初のアプリのセットアップを進めると、その構造がどのように見えるかがわかります.

入門

本当に必要なのは、インターネットへのアクセス、コマンドラインに関する非常に基本的な知識、およびコードエディターだけです。.

ほとんどのLinuxユーザーはおそらくターミナルへのアクセス方法を知っていますが、そうでない場合に備えてLinuxターミナルのクイックガイドを次に示します。 Mac OS Xを使用している場合は、ターミナルアプリでLinux / Unixのようなコマンドラインにアクセスできます。.

Windowsコマンドラインは、Mac OS XおよびLinuxのコマンドライン(bashと呼ばれる)とは少し異なります。.

Windows Powershellを使用できますが、ここだけでなく、他のほとんどのチュートリアルやリファレンスガイドでも、かなり「翻訳」する必要があります。.

最も簡単な方法は、おそらくbashターミナルをインストールすることです。.

いくつかのオプションがあります。

  • Cygwin:これは、bashターミナルを含む、Windows用のLinux / Unixツールのコレクションです。.
  • Gitbash:Git for Windowsにはbash実装が付属しています。とにかくバージョン管理にはgit(およびGithub)を使用するので、これは非常に簡単なソリューションです。.
  • Windows 10には、UbuntuベースのBashシェルが含まれています。機能させるには少し時間がかかります.

すべてをインストールする

Djangoを実行するには、Python、Pythonパッケージマネージャーのアップグレード、仮想環境のセットアップ、Djangoのインストールなど、いくつかの手順があります。.

パイソン

コンピューターにPythonがない場合は、Pythonが必要です。すべての主要なオペレーティングシステムのPythonへのリンクについては、Pythonのダウンロードページを参照してください。.

Python 2ではなくPython 3が必要です。DjangoでPython 2を使用できますが、Python 3は言語の現在と未来です.

PythonとDjangoを使い始めたばかりの場合は、Python 3を使用してください。.

コンピューターにPython 2が既にインストールされている場合があります。これを書いている時点で、Mac OS XにはPython 2が同梱されており、いくつかのLinuxディストリビューションにも同梱されています。 Python 3をインストールして使用します。 (次のステップで説明するように、コンピューターに2つのバージョンのPythonがあっても問題ありません。)

使用しているPythonのバージョンがわからない場合は、コマンドラインにpythonと入力してください.

それは教えてくれます。たとえば、Pythonバージョン3.5.1を実行している場合は次のようになります。

> python
Python 3.5.1(v3.5.1:37a07cee5969、2015年12月5日、21:12:44)
[GCC 4.2.1(Apple Inc.ビルド5666)(ドット3)]ダーウィン
タイプ "助けて", "著作権", "クレジット" または "ライセンス" 詳細については.

Pythonを実行してv2が明らかになった場合は、python3を試してください。 Python 3がインストールされている場合は、.

Python Package Managerをアップグレードする

Pythonには、Pythonパッケージマネージャであるpipが付属しています。ただし、アップグレードする必要があります(Pythonインストールバンドルは、pipが更新されるたびにアップグレードされません)。幸いなことに、pipは簡単なターミナルコマンドで自身をアップグレードします。

> pip install –pipのアップグレード

Python仮想環境

Djangoプロジェクトを含むすべてのPythonプロジェクトには、通常、多数の個別のサードパーティパッケージが含まれます。.

Pythonを頻繁に使用すると、最終的にバージョンの競合が発生します。このプロジェクトにはv4.3が必要ですが、このプロジェクトにはv5.1が必要です。ソリューションはPython仮想環境です.

Pythonにはいくつかの仮想環境ツールがあります。 virtualenvを使用します。まず、pipでインストールします。

> pip install virtualenv

次に、Djangoプロジェクトの仮想環境を設定します。 Djangoプロジェクトを格納する新しいディレクトリを作成します.

このディレクトリにはプロジェクトディレクトリなどが含まれるので、混乱しないようにするには、プロジェクト名以外の名前を付けるのが最善です。これをdjango-projectsと呼びます.

コンテナディレクトリを作成し、ディレクトリ内からvirtualenvを実行します.

virtualenvを実行するときは、python3を指定して環境に名前(djenv)を付け、仮想環境をアクティブにします.

> mkdir django-projects
> cd django-projects
〜/ django-projects > virtualenv -p python3 djenv
〜/ django-projects > ソースdjenv / bin / activate
(djenv)〜/ django-projects >

これで、djenvという名前の仮想環境に入りました。インストールまたはアップグレードするすべてのpipパッケージは、この仮想環境がアクティブ化されている場合にのみ使用できます.

仮想環境を非アクティブ化するには、単にdeactivateと入力します.

名前の付け方に関する簡単なメモ— virtualenv、Django、Pythonのほとんどのドキュメントでは、一般的に、サンプルの仮想環境の名前としてvenvを使用しています.

コンピュータでいくつかの異なるものを作成する可能性があるため、自分で行うと混乱する可能性があります。.

また、envは別のPython仮想環境ツールの名前です.

便利なアプローチは、プロジェクトに関係のある環境に名前を付けることです(django環境のdjenvなど)。ただし、好きな名前を付けることができます。.

Djangoをインストールする

これは非常に簡単です。

(djenv)〜/ django-projects > ピップインストールジャンゴ

仮想環境を無効にして、システム全体にDjangoをインストールすることもできます。それはあなた次第です.

どちらの方法でも、pipはDjangoとそのすべての依存関係のインストールを開始します。これには時間がかかる場合があります.

プロジェクトを始める

「プロジェクト」は、(一般的に)単一の完全なウェブサイト(または潜在的には一連のサイト)であると理解されています.

サイトには、ブログ、フォーラム、ストア、ヘルプチャットなど、いくつかの異なる機能がある場合があります。.

これらはそれぞれ「アプリケーション」(または単に「アプリ」)と呼ばれます。つまり、プロジェクトはアプリのコレクションです.

これは、物事をどのように構成するかで重要ですが、物事にどのように名前を付けるかも重要です。.

人々が写真を共有できる新しいWebアプリを作成したいとします。心の中で、サイト全体が「アプリ」です。

しかし、Djangoプロジェクトをphoto-share-app(またはその他)という名前で初期化すると、複製されたディレクトリ名と混同されることになります.

Djangoプロジェクトの構造

Djangoプロジェクトのディレクトリ構造は次のようになります。

– /プロジェクト名/
– プロジェクト名/
– アプリ名/
– アプリ名/
– アプリ名/

最初にプロジェクトを初期化すると、最上位のプロジェクトディレクトリが取得され、その中に2番目のディレクトリが取得されます。.

トップレベルは、それ以外のコンテナとして機能します。第2レベルには、プロジェクト全体の構成ファイルがあります。.

作成している新しいアプリケーションは、1つ(または複数)の追加のアプリケーションディレクトリにあります。.

これにより、いくつかの不快感が生じます。すばらしい名前の新しい新しいウェブアプリを作成しているとしましょう(これをwihtと呼びましょう)、それについて考えなければ、次のようになります。

– / withht /
– と
– ?… 自分が構築しているものを何と呼ぶべきか…?/

ここに提案があります:

– / wiht_site /
– wiht_site /
– wiht_app /

これにより、すべてが明確で覚えやすくなります。また、使用したい一般的なWebサイト機能を簡単に追加できます。.

または、スタンドアロンモジュールとして意味がある場合は、追加のカスタムアプリを自分で作成することもできます。

– / wiht_site /
– wiht_site /
– wiht_app /
– サードパーティのブログアプリ/
– サードパーティフォーラムアプリ/
– wiht-crm-app /

Djangoドキュメントではmysiteを使用していますが、例としてはこれで十分です。プロジェクトごとに一意の名前が必要です.

(もちろん、Djangoを使用するために新しいアプリを作成する必要はありません。プロジェクトをセットアップして、既存のアプリのコレクションを使用するだけで済みます。.

このようにして、複雑で多機能のウェブサイトを非常に迅速に稼働させ、後で顧客が作成したアプリを追加する柔軟性を得ることができます。)

(最後に)プロジェクトを初期化する

「コンテナー」ディレクトリ(上記の/ django-projectsを使用)内で、仮想環境をアクティブにして、django-adminコマンドで新しいプロジェクトを初期化します。.

(djenv)〜/ django-projects > django-admin startproject wiht_site

今あなたは持っています:

– / wiht_site /
– manage.py
– wiht_site /
– __init__.py
– settings.py
– urls.py
– wsgi.py

テストサーバーを実行して、すべてが正しく行われたことを確認します.

(djenv)〜/ django-projects > cd wiht_site
(djenv)〜/ django-projects / wiht_site > python manage.py runserver

次のような出力が得られます。

システムチェックの実行…

システムチェックで問題は確認されませんでした(0は無音).

未適用の移行があります。アプリは適用されるまで適切に機能しない可能性があります.
それらを適用するために「python manage.py migrate」を実行します.

2016年4月22日-17:45:53
Djangoバージョン1.9、設定 ‘wiht_site.settings’を使用
http://127.0.0.1:8000/で開発サーバーを起動しています
CONTROL-Cでサーバーを終了する.

ブラウザでhttp://127.0.0.1:8000を開くと、正常に機能しているはずです。「Djangoへようこそ」というメッセージが表示されます。.

最初のアプリの初期化

ここから、djenv環境がアクティブになっている最上位のwiht_siteディレクトリ(サブディレクトリ)に常にいるとします。.

例でこれを見ると:

>

ここにいるとします:

(djenv)〜/ django-projects / wiht-app >

manage.pyで新しいアプリを作成する.

> python manage.py startapp wiht_app

これにより、次の内容で新しいディレクトリ/ wiht_app /が作成されます。

– __init__.py
– admin.py
– apps.py
– マイグレーション/
– __init__.py
– models.py
– tests.py
– views.py

次に、アプリを「インストール」する必要があります。 /wiht_site/wiht_site/settings.pyを開き、INSTALLED_APPSを見つけます。これを編集して、新しいアプリを含める必要があります.

INSTALLED_APPS = [
「wiht_app」,
「django.contrib.admin」,
「django.contrib.auth」,
「django.contrib.contenttypes」
「django.contrib.sessions」,
「django.contrib.messages」,
「django.contrib.staticfiles」,
]

何かを開発する

Djangoアプリには、Model-View-Controllerアーキテクチャに近いものがあり、Djangoのドキュメントでは、Model-View-Templateを呼び出す場合があります.

これにより、簡単に採用できる反復的な開発パターンが得られます。

  • モデルで作業し、追跡するデータのタイプとそれらの相互関係を定義します。
  • ビューでの作業、データへのアクセス方法およびデータ操作時の処理の定義。
  • テンプレートで作業し、ユーザーに表示されたとき、または別のアプリケーションによって消費されたときのデータの外観を定義します.
モデルと移行

新しい機能の構築は通常、モデルの作成から始まります。モデルは(OOPの意味で)クラスであり、システム内のさまざまなオブジェクトとそれらの相互関係を定義します。したがって、ブログアプリケーションでは、Post、Page、Category、Commentなどのモデルがあり、コメントは投稿のサブクラス(一種)であり、投稿とページはContentItemのサブクラスである可能性があります。.

モデルは、各アプリのmodels.pyファイルに記述されています。これがブログ投稿の非常にシンプルなモデルの始まりです.

django.dbインポートモデルから
django.contrib.auth.models import Userから

#ここでモデルを作成します.
クラスPost(models.Model):

title = models.CharField(
max_length = 100,

slug = models.SlugField(
unique = True,

抜粋= models.TextField(
max_length = 255,

content = models.TextField(
blank = True,

著者= models.ForeignKey(
ユーザー,

created = models.DateTimeField(
auto_now_add = True,

def __str __(self):
self.titleを返す

Djangoには独自のオブジェクトリレーショナルマッパー(ORM)があり、データベースに抽象化のレイヤーを提供します。これにより、特定のデータベース管理システムを参照することなく、またSQLを記述する必要なく、データモデルを定義できます。.

モデルを追加するときに、移行を作成して実行します。移行は、モデルに一致するようにデータベース設計を変更するSQLコマンドの自動生成セットです。DjangoのORMはモデルをSQL移行に変換します.

その前に、データベースを設定して接続する必要があります。ここには多くのオプションがありますが、ほとんどのDjangoユーザーはPostgreSQLを好み、他のデータベースでは利用できないDjango用の特別なPostgreSQLツールがあります.

データベースを実行したら、移行できます.

> python manage.py makemigrations
> python manage.py migrate

管理者

Djangoはデータの自動管理ビューを提供するため、モデルを使用して基本的なCRUD操作をほぼ即座に実行できます。また、編集UIのニーズがそれほど複雑でない場合は、独自の編集ビューを構築せずに管理サイトを使用できます。必要なのは、モデルを管理モジュールに登録することだけです。これは、アプリケーションディレクトリ内のadmin.pyで行われます。.

django.contribインポート管理者から
.models import Postから

admin.site.register(投稿)

ログインして管理者にアクセスするには、コマンドラインからスーパーユーザーを作成します.

> python manage.py createsuperuser

端末内のプロンプトに従って、ユーザー名、電子メール、パスワードを入力します。次に、サーバーを起動します。

> python manage.py runserver

そして、http://127.0.0.1:8000 / admin /でログインできるはずです。すべてが正しく構成されていれば、簡単なブログ投稿を表示、追加、編集、削除できるはずです。.

今こそ、少数のサンプル投稿を作成する良い機会です。次のステップをより意味のあるものにします.

景色

Djangoでは、「ビュー」はフロントエンドの表示コード(「テンプレート」と呼ばれます)ではありません。 Djangoがビューと呼ぶものは、他のフレームワークの「コントローラー」に似ています。 HTTPリクエストを引数として受け取り、レスポンスを返す関数です。通常、応答はWebページのコンテンツであり、テンプレートからアクセスできます。応答は、リダイレクト、エラーメッセージ、ファイル、またはその他のものでもかまいません。.

最も一般的な状況は、特定のコンテンツ(たとえば、1つの特定の投稿)に対するリクエストを送信し、そのコンテンツに関連付けられているすべてのデータ(タイトル、抜粋、コンテンツ、著者)。もう1つの一般的な状況は、ブログやニュースフィードのフロントページなど、コンテンツアイテムのリストを表示したい場合です。.

Djangoには、これらをすばやく実現するための組み込みの汎用ビューが用意されています。使用する2つは、ListViewとDetailViewです。それらを拡張したり、独自のビューを作成したりする場合は、views.pyで行いますが、ここでは現状のまま使用します。.

これらのビューをURLにマップする必要があるだけです。 /wiht_site/urls.pyに、アプリ固有のURLマッピングを含める必要があります.

django.conf.urlsからインポートurl、インクルード
django.contribインポート管理者から

urlpatterns = [
url(r ‘^ admin /’、admin.site.urls),
url(r ‘^’、include( ‘wiht_app.urls’)),
]

次に、アプリのurls.pyを編集します.

django.conf.urlsからインポートurl、インクルード
から。ビューをインポートする
django.views.genericインポートからListView、DetailView
.models import Postから

urlpatterns = [
url(
r ‘^ blog /

各パターンを定義するurl()関数には、一連のコンマ区切りの引数があります。

  • 受信リクエストを照合するURLパターンを定義する正規表現。
  • 引数付きの定義済みビュー:
    • モデル;
    • テンプレートファイル名;
  • このURLパターンの名前.

上記のパターンは、/ blog /および/ blog / post-slug /のURLパターンをListViewおよびDetailViewに照合し、それらのテンプレートを指定します(index.htmlおよびpost.html).

テンプレート

あとは、このコンテンツを表示するためのテンプレートを作成するだけです。 DjangoはJinjaテンプレートを使用しています.

3つの新しいファイルを作成します。

/wiht_site/wiht_app/templates/wiht_app/main.html

{%ブロックコンテンツ%}
{%エンドブロック%}

/wiht_site/wiht_app/templates/wiht_app/index.html

{%延長 "wiht_app / main.html" %}

{%ブロックコンテンツ%}

投稿

{object_list%のエントリの%}

{{entry.title}}

{{entry.excerpt}}

{%forfor%}

{%エンドブロック%}

/wiht_site/wiht_app/templates/wiht_app/post.html

{%延長 "wiht_app / main.html" %}

{%ブロックコンテンツ%}

{{ 記事のタイトル }}

{{post.author}}
投稿日:{{post.created}}
{{post.content}}

{%エンドブロック%}

おめでとうございます。これで動作するブログアプリケーションができました。.

参考資料とリソース

コーディングと開発に関連するガイド、チュートリアル、およびインフォグラフィックが他にもあります。

  • Pythonの紹介、リソース、およびFAQ:この記事には、Pythonプロになるのに役立つ多数のリソースが含まれています.
  • Web Server Gateway Interface Primer:この仕様を使用してDjangoでPythonフレームワークを使用する方法を学ぶ.
  • Ruby on Railsの概要:この記事では、PythonおよびDjangoの代替手段を紹介します。.

,
ListView.as_view(
queryset = Post.objects.all()。order_by(“ created”)[:50],
template_name =” wiht_app / index.html”
),
name = ‘post-list’
),
url(
r’blog /(?P [a-zA-Z0-9] +(?:-[a-zA-Z0-9] +)*)/各パターンを定義するurl()関数は、一連のコンマで区切られています引数:

  • 受信リクエストを照合するURLパターンを定義する正規表現。
  • 引数付きの定義済みビュー:
    • モデル;
    • テンプレートファイル名;
  • このURLパターンの名前.

上記のパターンは、/ blog /および/ blog / post-slug /のURLパターンをListViewおよびDetailViewに照合し、それらのテンプレートを指定します(index.htmlおよびpost.html).

テンプレート

あとは、このコンテンツを表示するためのテンプレートを作成するだけです。 DjangoはJinjaテンプレートを使用しています.

3つの新しいファイルを作成します。

/wiht_site/wiht_app/templates/wiht_app/main.html

/wiht_site/wiht_app/templates/wiht_app/index.html

/wiht_site/wiht_app/templates/wiht_app/post.html

おめでとうございます。これで動作するブログアプリケーションができました。.

参考資料とリソース

コーディングと開発に関連するガイド、チュートリアル、およびインフォグラフィックが他にもあります。

  • Pythonの紹介、リソース、およびFAQ:この記事には、Pythonプロになるのに役立つ多数のリソースが含まれています.
  • Web Server Gateway Interface Primer:この仕様を使用してDjangoでPythonフレームワークを使用する方法を学ぶ.
  • Ruby on Railsの概要:この記事では、PythonおよびDjangoの代替手段を紹介します。.

,
DetailView.as_view(
model = Post,
template_name ="wiht_app / post.html"),
名前="役職"

]

各パターンを定義するurl()関数には、一連のコンマ区切りの引数があります。

  • 受信リクエストを照合するURLパターンを定義する正規表現。
  • 引数付きの定義済みビュー:
    • モデル;
    • テンプレートファイル名;
  • このURLパターンの名前.

上記のパターンは、/ blog /および/ blog / post-slug /のURLパターンをListViewおよびDetailViewに照合し、それらのテンプレートを指定します(index.htmlおよびpost.html).

テンプレート

あとは、このコンテンツを表示するためのテンプレートを作成するだけです。 DjangoはJinjaテンプレートを使用しています.

3つの新しいファイルを作成します。

/wiht_site/wiht_app/templates/wiht_app/main.html

/wiht_site/wiht_app/templates/wiht_app/index.html

/wiht_site/wiht_app/templates/wiht_app/post.html

おめでとうございます。これで動作するブログアプリケーションができました。.

ウェブホスティングクーポン

Djangoホスティングに関する多くを探しています?
A2 Hostingは、最近の速度およびパフォーマンステストで第1位にランクされました。現在、開発者向けのプランを最大50%節約できます.
この割引リンクを使用する
契約を結ぶ.

参考資料とリソース

コーディングと開発に関連するガイド、チュートリアル、およびインフォグラフィックが他にもあります。

  • Pythonの紹介、リソース、およびFAQ:この記事には、Pythonプロになるのに役立つ多数のリソースが含まれています.
  • Web Server Gateway Interface Primer:この仕様を使用してDjangoでPythonフレームワークを使用する方法を学ぶ.
  • Ruby on Railsの概要:この記事では、PythonおよびDjangoの代替手段を紹介します。.
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map