投稿日: | 最終更新日:
viewの作成とurlの接続・url関数のおさらい(Django)
Djangoで簡単なviewを作成します。今回は、基本的なviewの作成とurlの接続を行います。
viewの作成とurlの接続
Djangoにおけるviewとは、HttpRequestを受け取ってHttpResponseを返す機能を果たします。Django開発の基本は、viewを作成したらurls.pyにurlの設定を記述してお互いを接続することです。
以前にもurlの設定方法を記述しましたので、こちらも参考にして下さい。
urlの設定方法など、django1.8で大きく概念が変わりました。本家日本語のチュートリアル(django1.4)を見ながら進めている人は注意してください。
前提
- 既にDjangoのプロジェクトを作成済み。
- 投票アプリ用モデル(Choice、Question)作成済み。
準備
当サイトでは、Vagrantでゲスト環境(仮想環境)を作ってDjangoを動かいていますが、それ以外の環境でも操作方法はだいたい同じです。
①Djangoプロジェクトを生成します。
→VagrantのDjangoで作るWebアプリケーション(その1 プロジェクト生成)
②Djangoアプリケーションを作ります。
→VagrantのDjangoで作るWebアプリケーション(その2 プロジェクトの初期設定)
③投票アプリのモデルを定義します。
→投票アプリを作る その1モデルの定義、管理サイトの表示(Django)
環境
OS | CentOS 7.1.1503 |
---|---|
pyenv | 1.1.3-5-g7dae197 |
Anaconda | 3-4.3.0 |
MariaDB | 5.5.52-1.el7 |
Apache | 2.4.6 |
mod_wsgi | 4.6.3 |
Django | 2.0.3 |
テストアプリ概要
①以下のようなDjangoアプリ構成を作ります。プロジェクト名が「pj1」で、アプリケーション名が「users」です。プロジェクトの設定は済ませたものとします。赤字のファイルは、今回変更する部分です。
- pj1/
- pj1/
- __init__.py
- settings.py
- urls.py
- wsgi.py
- users/
- __init__.py
- admin.py
- apps.py
- urls.py
- views.py
- models.py
- templates/
viewの追加
①userディレクトリのviews.pyに以下の記述をします。
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.")
- viewメソッドは第1引数に必ずHttpRequestクラスを受け取ります。
- また,戻り値としてHttpResponseクラス(もしくはそれを継承したクラス)を返す必要があります。
次にurlとviewを結びつけます。
urlの設定
djangoへのアクセス時には、最初にROOT_URLCONF(デフォルトではproject/urls.py,今回の例ではpj1/pj1/urls.py)を確認します。ここでどのviewを呼び出すかを確認します。
①usersディレクトリのurls.pyに以下の記述をします。
from django.conf.urls import url from . import views urlpatterns = [ url(r'^polls/$', views.index, name='index'), # urlとviewの結びつけ ]
polls.views.indexとpollsのurlが接続されました。しかし、polls.urlsはroot_urlではないためまだブラウザから確認することはできません。
②pj1ディレクトリのurls.pyに以下の記述をします。
from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ url('admin/', admin.site.urls), url(r'^', include('users.urls', namespace = 'users')) # urlと他のurlpatternsとの結びつけ ]
- urls.pyにはurlpatternsという配列が設定されています。
- 配列の要素はurl関数で追加していきます。
- url関数ではurlとview、もしくはurlと他のurlpatternsを結びつけます。
root_urlを更新した状態です。これで「http://ドメイン/」に一致するurlはusers.urlsを呼び出すようになり、ブラウザで確認できるようになります。
③簡易サーバを起動します。
cd pj1 python manage.py runserver 0.0.0.0:8000
④ブラウザから「http://localhost:8000/polls/」にアクセスしてみましょう。
url関数
urlpatterns = [ url(r'^polls/$', views.index, name='index'), ]
url関数は第1引数にurlの正規表現を記述し、第2引数にview関数またはinclude関数の戻り値を渡します。
- r”は正規表現ではなくraw文字列です。
- raw文字列は、\をエスケープ文字ではなくそのまま出力するようになります。
- 第3引数の「name=’index’」はurlの逆引き用です。別viewへのリダイレクトやtemplate内でのリンクに使用します。
urlpatterns = [ url(r'^', include('users.urls', namespace = 'users')) ]
includeを使用した場合、matchした文字列を取り除いた部分を次のurlpatternsに渡します。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1