2018年9月30日template使用のおさらい(Django)DjangoPythonDjangoで簡単なviewを作成し、templateを使用して表示します。Djangoのtemplate準備テストアプリ概要templateの使用templateへの値渡しhtmlタグをエスケープしないDjangoのtemplateDjangoのtemplateとは、htmlファイルです。viewのデータをtemplateのhtmlで受け取って表示します。tmplateは、以下のようにアプリケーションディレクトリの下のtmplateディレクトリへ設置します。project/app/templates/app/形式は一般的なhtmlとほぼ変わりません。}}」のように中括弧2つで囲むとDjangoから渡された値を使用できます。%}」の形式でテンプレートタグと呼ばれる関数を実行することができます。Djangoのプロジェクトを作成済み。投票アプリ用モデル(Choice、Question)作成済み。当サイトでは、Vagrantでゲスト環境(仮想環境)を作ってDjangoを動かいていますが、それ以外の環境でも操作方法はだいたい同じです。1Djangoプロジェクトを生成します。プロジェクト生成)2Djangoアプリケーションを作ります。プロジェクトの初期設定)3投票アプリのモデルを定義します。その1モデルの定義、管理サイトの表示(Django)4urlのルーティングを設定し、Viewを作成します。7.1.1503pyenv1.1.3-5-g7dae197Anaconda3-4.3.0MariaDB5.5.52-1.el7Apache2.4.6mod_wsgi4.6.3Django2.0.3テストアプリ概要1以下のようなDjangoアプリ構成を作ります。プロジェクト名が「pj1」で、アプリケーション名が「users」です。プロジェクトの設定は済ませたものとします。赤字のファイルは、今回変更する部分です。pj1/pj1/__init__.pysettings.pyurls.pywsgi.pyusers/__init__.pyadmin.pyapps.pyurls.pyviews.pymodels.pytemplates/polls/index.htmltemplateの使用1usersディレクトリのurls.pyに以下の記述をします。urlとviewの結びつけ]※前回の「viewの作成とurlの接続・url関数のおさらい(Django)」と同じです。2pj1ディレクトリのurls.pyに以下の記述をします。urlと他のurlpatternsとの結びつけ]3usersディレクトリのviews.pyに以下の記述を追加します。'polls/index.html')render関数requestとテンプレートパスを渡すと、そのテンプレートを使用したレンダリング結果をHttpResponseとして返します。4templatesディレクトリ配下にpollsディレクトリを作成し、以下の内容のindex.htmlを作成します。version!</p></body></html>5簡易サーバを起動します。0.0.0.0:80006ブラウザから「http://localhost:8000/polls/」にアクセスします。すると、以下のような結果がでます。templateへの値渡しここまでで静的なページは作れるようになりました。次に動的ページを作ります。1usersディレクトリのviews.pyに以下の記述を追加します。})renderメソッドrenderの第3引数にpythonの辞書を渡すことでtemplateに値を渡すことができます。}}」の形式で書きます。2以下の内容のindex.htmlに記述します。}}</p></body></html>3簡易サーバを起動します。0.0.0.0:80004ブラウザから「http://localhost:8000/polls/」にアクセスします。すると、以下のような結果がでます。htmlタグをエスケープしないfugaは<br>がエスケープされて出力されてしまっています。セキュリティ的には嬉しいですが,タグを出力したい場合があります。タグを出力する場合には、「django.utils.html.mark_safe関数」を使用します。この関数は文字列が安全であるという印をつけ、それ以上エスケープされないようにします。