【無料】「Djangoのキホン」URLconf、ビュー、テンプレートの作成【Udemyで学習】

 

www.youtube.com

このレクチャーでは「URLconf、ビュー、テンプレートの作成」を説明します。

アプリケーションディレクトリであるnewsディレクトリ直下のurls.pyスクリプト、および、プロジェクトディレクトリであるmysiteディレクトリ直下のurls.pyスクリプトは、URLconfと呼ばれます。アプリケーションのurls.pyに定義されたurlpatternsリストは、URLパターンとビュー関数を紐付けます。URLconfは、URLとPythonブログラムを疎結合する役割を持っています。

newsアプリケーションのURLconfは、スライド上のようなプログラムになります。urlpatternsリストは、3行で記載された、3つの要素で構成され、すべてpathメソッドが記載されています。path()メソッドの第一引数には「URLパターン」を、第二引数には、viewモジュールのビュー関数を指定して、URLパターンとビュー関数を紐付けています。URLパターンの中の「int:変数名」は、任意の正の整数と合致することを意味しています。合致すると指定した変数に格納されます。ビュー関数は、この説明の後、作成します。

もう少し、詳細に説明しましょう。

一行目は、URLが「articles/正の整数/」の場合、viewsモジュールのyear_archiveメソッドがコールされることを意味しています。URLパターンの整数の部分は、西暦年で、ビュー関数にyear変数で引き継がれます。

二行目は、URLが「articles/正の整数/正の整数/」の場合、viewsモジュールのyear_monthメソッドがコールされることを意味しています。URLパターンの整数の部分は、西暦年と月で、ビュー関数に、year変数、month変数で引き継がれます。

三行目は、URLが「articles/正の整数/正の整数/正の整数」の場合、viewsモジュールのarticle_detailメソッドがコールされることを意味しています。URLの整数の部分は、西暦年と月とプライマリーキーで、ビュー関数に、year変数、month変数、pk変数で引き継がれます。

利用者がブラウザから、ページをリクエストすると、Djangoはurlpattersリストを上から順に検査し、要求されたURLに一致したURLパターンで停止し、紐付いたビュー関数をコールします。コールする際、URLパターンの可変部分は、メソッドの引数として引き継がれます。

次は、ビューを作ります。ビューは一般的に、データベースからデータを取得し、HTMLテンプレートをロードして、テンプレートの可変部分をデータベースの値などで埋め込んで、HTTPレスポンスを生成します。データベースを検索するためのキーは、URLconfから引き継いだ、URLの可変部分を使うことが多いと思い
ます。このレクチャーの場合では、西暦年や月などが相当します。

スライドの、ビューのスクリプトをご覧ください。このビューはnewsディレクトリ直下の、views.pyに記載されます。

このモジュールには、year_archiveメソッドだけが掲載されています。先ほど説明したURLconfのためには、3種類のビュー関数が必要ですが、ここでは1種類のみ説明します。

year_archiveメソッドは、引数として、request変数とyear変数を受け取っています。request変数はビュー関数が必ず受け取る、HTTPリクエストオブジェクトです。year変数はURLパターンから拾った西暦年です。メソッド内では、まず一行目で、Articleモデルを、pub_dateフィールドの年が、引数のyear変数と一致するという条件で検索し、インスタンスリストを取得しています。二行目では、辞書型のcontext変数に西暦年と、検索結果を入れ込んでいます。三行目では、renderメソッドを実行しreturnしています。renderメソッドは、第二引数で指定したHTMLテンプレートと、第三引数で指定したコンテキスト変数で、HTMLを生成します。生成したHTMLは、HTTPレスポンスに乗せて、ブラウザに送信されます。

次のスライドでは、テンプレートをご覧いただいています。

テンプレートの中で「{% %}」で囲まれた部分は、テンプレートタグと呼ばれる、特別な働きをするタグです。「{{ }}(二重の波括弧で囲まれた部分)」は、指定された変数の値に置き換わる部分で、テンプレート変数と呼ばれます。

スライド右側のHTMLテンプレートは、html要素の中に、head要素や、body要素が記載されたテンプレートです。上から四行目に「block title」タグと「endblock」タグがあります。また、下から三行目に、「block content」タグと「endblock」タグがあります。この部分は、左側のテンプレートの内容で置き換わる部分です。

もう少し説明します。左側のテンプレートの1行目に記載されたextendsは、テンプレートの継承機能を使うことを意味しています。この記載により、base.htmlというテンプレートをロードして、その中にある可変ブロックに、左側のテンプレートで生成したHTMLの断片を埋め込むことを意味しています。この継承機能によって、複数のテンプレートの重複記述を減らすことができます。

左側のテンプレートyear_archive.htmlには、二つのブロックが定義されています。一つは「block title」タグの行、二つ目は「block content」タグから始まるブロックです。いずれも、ブロック定義の終わりは「endblock」タグです。右側のテンプレートbase.htmlには、この二つのブロックを差し込む部分を定義しているというわけです。

もう一度、左のテンプレートをご覧ください。「for article in article_list」タグから「end for」タグは、コンテキスト変数で受け継いだ、Airtileモデルのインスタンスリスト数分、つまり検索で取得したレコード数分、繰り返される部分です。繰り返しの度、インスタンスはarticle変数に格納され、article変数のhead_lineフィールドの値を、p要素の値として出力しています。下から三行目「article.pub_date」の出力は、パイブ(縦棒)によりdateフィルタに送られています。dateフィルタは、引数の"F, j Y"の指定によって英語の月表示、日、4桁の西暦からなる文字列に整形され出力します。

以上で「URLconf、ビュー、テンプレートの作成」の説明を終わります。

★★★ 続きはUdemyで ★★★
https://www.udemy.com/course/django_basics/?referralCode=D0729A1E341CE9EC4909
★★★ コース内でお逢いできることを楽しみにしています。 ★★★

【無料】「Djangoのキホン」【デモ】高機能な管理インタフェース【Udemyで学習】

www.youtube.com

このレクチャーでは「高機能な管理インタフェース」のデモをご覧いただきます。

管理インターフェースを使用してモデルを操作するためには、ファイルをひとつ編集する必要があります。エディタで、newsディレクトリのadmin.pyファイルを開きます。ご覧の通り、admin.pyはimport宣言だけのシンプルな形になっています。ここに「from . import models」を追加します。それから 「admin.site.register(models.Reporter)」を追加します。その下に「admin.site.register(models.Article) 」を追加します。この二行の追加でnewsアプリのモデルReporter(リポーター)モデルとArticle(アーティクル)モデルが、管理インタフェースの対象となりました。プログラムを変更したら、ファイルの保存を忘れずに実行しましょう。

次は、管理インタフェースのログインするための、一人目のユーザを作成します。シェルで「python manage.py createsuperuser」とタイプします。ユーザ名を聞いてくるので「admin」とタイプします。次にEmailアドレスを聞いてくるので、メールアドレス「admin@example.com」をタイプします。次にパスワードを、2回聞いてきます。同じパスワード「djangosu」を2回タイプします。「Superuser created successfully」と表示され、一人目のユーザが作成されたことがわかります。

次に、Django付属の開発用サーバを起動します。シェルで「python manage.py runserver」とタイプします。「Starting development server at http://127.0.0.1:8000/ 」と表示されたら、開発用サーバが正常に起動できたということになります。

ブラウザで http://127.0.0.1:8000/admin/ にアクセスしてみましょう。管理インタフェースの、ログイン画面が表示されました。先ほど作成したユーザ「admin」とパスワード「djangosu」でログインしてみます。ログインすると、管理インタフェースのトップ画面が表示されます。トップ画面ではnewsアプリケーションの二つのモデルが、表示されています。Articleの追加をクリックしてみましょう。すぐに使えそうな、Articleの追加画面が表示されました。

簡単な設定で、高機能な管理インタフェースが使えるようになることを、お分かりいただけたと思います。

最後に、シェルでCONTROL-Cをタイプして、開発用サーバを終了しておきましょう。

以上で「高機能な管理インタフェース」のデモを終わります。

★★★ 続きはUdemyで ★★★
https://www.udemy.com/course/django_basics/?referralCode=D0729A1E341CE9EC4909
★★★ コース内でお逢いできることを楽しみにしています。 ★★★

【無料】「Djangoのキホン」モデルの定義とデータベーステーブルの作成【Udemyで学習】

www.youtube.com

このレクチャーでは「モデルの定義とデータベーステーブルの作成」を説明します。

まずは、モデルの定義です。

モデルは、データベースのテーブル情報を、定義したクラスだと思ってください。現時点では、そのくらいのイメージを想像していただいた方が、理解しやすいと思います、テーブル情報とは、テーブルの名前、カラムの名前、カラムのデータ型などです。スライドでご覧いただいている例では、二つのクラスReporter(リポーター)クラスとArticle(アーティクル)クラスが、二つのテーブル情報を表しています。

はじめは、Reporeter(リポーター)クラスです。Reporterクラスは、データベースの、reporterテーブルに対応します。厳密に言うと、テーブル名には、接頭辞としてアプリケーション名が付きますが、ここでは言及しないことにします。クラス変数はモデルのフィールドです。reporter(リポーター)テーブルには、full_nameという、文字列型のカラムが存在することを、示しています。

次は、Aritcle(アーティクル)クラスです。Aritcleクラスは、データベースの、articleテーブルに対応します。フィールドを確認すると、article(アーティクル)テーブルには日付型のpub_date, 文字列型のhead_line, content, reporter(リポーター)テーブルの外部キーを保持する、reporterカラムが存在することがわかります。

それぞれのクラスに定義している__str__メソッドは、モデルのインスタンスの特徴を「一言で示す」文字列を返却するメソッドです。モデルのインスタンスは、テーブルのレコードに対応します。テーブルのレコードの特徴を示すカラムの設定値を、文字列でreturnします。Reporter(リポーター)クラスではfull_nameカラムの設定値を、Article(アーティクル)クラスではheadlineの設定値を返却しています。

モデルからデータベースのテーブルを作成することを、Djangoでは「マイグレーション」と呼んでいます。モデルを定義したら、次は、マイグレーションを実行し、データベースのテーブルを生成します。

はじめに、シェルで「python manage.py makemigrations」とタイプします。このコマンドはデータベースを操作するための準備をします。準備の内容は、後のセクションで説明します。

次に、「python manage.py migrate」とタイプします。このコマンドで、データベースのテーブルを操作します。本レクチャーの例では、初回のマイグレーションなので、データベースにテーブルを作成します。フィールドの追加など、モデルを修正した場合は、既存のテーブルに対する変更を実施します。

以上で「モデルの定義とデータベーステーブルの作成」の説明を終わります。

 

★★★ 続きはUdemyで ★★★
https://www.udemy.com/course/django_basics/?referralCode=D0729A1E341CE9EC4909
★★★ コース内でお逢いできることを楽しみにしています。 ★★★

【無料】「Djangoのキホン」Djangoとは【Udemyで学習】

 

www.youtube.com

このレクチャーでは「Djangoとは」について説明をします。

Djangoは、Pythonで実装された「Webアプリケーションフレームワーク」です。「Webアプリケーションフレームワーク」とは、動的Webサイトを少ない労力で開発するためのソフトウェアです。Djangoは、アメリカの新聞社が自社の動的Webサイトを、できるだけ早く構築できること、そして、できるだけ早く改善できることを目的に開発されました。Djangoは、OSSオープンソースソフトウェア)であるため、無料で使うことができます。

Djangoを使用すると、思いついたアイディアを数時間で動的Webサイトにすることができます。動的Webサイトでの共通的な処理は、Djangoに準備された機能に任せて、アイディア独自の開発に集中できるからです。

「高速開発」Djangoの目標です。

Djangoは「フルスタック・フレームワーク」と言われます。動的Webサイトの開発に必要な、機能やツールが、多く含まれています。コーディングしたら、すぐに試すことができるように、開発用サーバも入っています。高機能ではありませんが、リレーショナル・データベースも入っています。スタートするのに、あれこれ集める必要はありません。

Djangoは「セキュリティ」に対しても万全です。SQLインジェクションクロスサイトリクエストフォージェリ、クリックジャッキング、考えられる多くのセキュリティ対策が盛り込まれています。

Django は「スケーラブル」です。作成した動的Webサイトの、トラフィックの増加に対応し、拡張できるように考えられています。Djangoがスケーラブルであることは、インスタグラムがDjangoで開発されていることで、証明されています。「インスタ映え」はDjangoが支えているのです。

さあ、Djangoの素晴らしさを私と共有しましょう。

以上で「Djangoとは」の説明を終わります。

★★★ 続きはUdemyで ★★★
https://www.udemy.com/course/django_basics/?referralCode=D0729A1E341CE9EC4909
★★★ コース内でお逢いできることを楽しみにしています。 ★★★

【無料】「Djangoのキホン」第1章「Djangoの概要」について【Udemyで学習】

www.youtube.com

第1章「Djangoの概要」

はじめに、第1章「Djangoの概要」で、習得できる事項を3つ紹介します。

1つ目は、「Djangoの概要がわかる」です。Djangoとは何のか?どのような特徴があって、どのようなメリットがあるのかが、わかるようになります。

2つ目は、「Djangoアーキテクチャーがわかる」です。ブラウザからのリクエストを受信してからレスポンスを返却するまで、Djangoの構成要素がどのように関わるのかを学ぶことで、ざっくりですが、Djangoアーキテクチャーを理解することができます。

3つ目は、「Djangoのプログラムやコマンドのイメージを掴むことができる」です。Djangoは、Web開発を「スピーディー」そして「簡単」に進めることができますよう、考えられています。このセクションでは、スライドと講師のデモで、Djangoの最も基本的なサンプルプログラムを説明します。本セクションの受講により、短時間で、Djangoのプログラムやコマンドのイメージを掴むことができます。

次に、このセクションのレクチャーの流れについてお話しします。このセクションは「Djangoの概要」について12のレクチャーで解説します。

まず、最初のレクチャーで「Djangoとは」についてお話しします。Djangoとは何か、Djangoを表す四つのキーワードと「インスタ映え」との関係も交え説明します。

そして、次のレクチャーで「Djangoアーキテクチャ」についてお話しします。ブラウザのリクエストを受信してからレスポンスを返却するまで、Djangoの構成要素がどのように関わるのかを説明します。

次のレクチャーでは「Djangoのインストール」についてお話しします。最も簡単なインストール方法の、実行コマンドを説明します。

続きのレクチャーで「Djangoのインストール」について、デモをご覧いただきます。

次のレクチャーでは「モデルの定義とデータベーステーブルの作成」についてお話しします。モデルを定義するPythonスクリプトの紹介と、データベースにテーブルを作成するマイグレーションについて説明します。

続きのレクチャーで「モデルの定義とデータベーステーブルの作成」について、デモをご覧いただきます。

次のレクチャーでは「対話型シェルでモデルの機能を確かめる」について、デモをご覧いただきます。DjangoのORM(オブジェクト関係マッピング)の魅力を感じていただけると思います。

次のレクチャーでは「高機能な管理インタフェース」についてお話しします。管理インターフェースは、Djangoの最も魅力的な機能です。

続きのレクチャーで「高機能な管理インタフェース」について、デモをご覧いただきます。

次のレクチャーでは「URLconf、ビュー、テンプレートの作成」についてお話しします。URLconf、そしてビューを定義するPythonスクリプトの紹介と、テンプレートの記載方法を説明します。

続きのレクチャーで「URLconf、ビュー、テンプレートの作成」について、デモをご覧いただきます。

そして、最後のレクチャーは「この章のまとめ」として、ご理解していただきたいポイントを振り返ります。

最後に、第1章「Djangoの概要」のスクリーンショットを、ご覧いただいています。スライド、講師のエディタ操作、開発アプリの動作検証、講師のシェル操作などを使ってお伝えします。

それでは、第1章「Djangoの概要」を始めます。一緒に学んでいきましょう。

★★★ 続きはUdemyで ★★★
https://www.udemy.com/course/django_basics/?referralCode=D0729A1E341CE9EC4909
★★★ コース内でお逢いできることを楽しみにしています。 ★★★