ホーム >  Python > Django >  viewの作成とurlの接続・url関数のおさらい(Django)

投稿日:   |  最終更新日:

viewの作成とurlの接続・url関数のおさらい(Django)

DjangoPython

Djangoで簡単なviewを作成します。今回は、基本的なviewの作成とurlの接続を行います。

viewの作成とurlの接続

Djangoにおけるviewとは、HttpRequestを受け取ってHttpResponseを返す機能を果たします。Django開発の基本は、viewを作成したらurls.pyにurlの設定を記述してお互いを接続することです。

以前にもurlの設定方法を記述しましたので、こちらも参考にして下さい。

Djangoのルーティング

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に渡します。



トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告