ホーム >  Python >  VagrantのDjangoで作るWebアプリケーション(その5 Viewの作成)

投稿日:   |  最終更新日:

VagrantのDjangoで作るWebアプリケーション(その5 Viewの作成)

Python

Vagrantの中に構築したDjango環境にViewを作成します。

Viewとは?

Viewとは、 Djangoのアプリケーションにおいて特定の機能を提供するウェブページの「型 (type)」で、アプリケーションのロジックです。また、Viewは各々のテンプレートを持っています。

Viewの仕組み

Viewは要求に応じてmodelから情報を取得しtemplateに渡します。Viewは、Pythonで記述されているだけです。

作業の流れ

  1. pj1/pj1/の「urls.py」を編集してURLのサブディレクトリ「app1」を定義します。
  2. pj1/app1/に「urls.py」を作成し、URLのサブディレクトリviews.indexを定義します。
  3. pj1/app1/の「views.py」を編集してViewを実際に書いてみます。

準備

Vagrantでゲスト環境(仮想環境)を作ります。ゲスト環境の中にDjangoを構築します。その前に、以下の作業を終わらせましょう。

①Virtualboxをインストールします。Virtualboxのインストールまでで結構です。

VirtualBoxをインストールする for Ubuntu

②Vagrantをインストールします。centos7環境を作りますので、Vagrantのインストールのみ済ませてください。

Vagrantをインストールしてテスト環境を作る for Ubuntu

③Vagrantにcentos7環境を作ります。

VagrantでCentOS7 + Python + Django環境を作る(その1 仮想環境作成)

④VagrantにPython3をインストールし、「pyenv + virtalenv」を作ります。

VagrantでCentOS7 + Python + Django環境を作る(その2 Pythonとpyenv + virtalenv)

⑤VagrantにMariaDBをインストールして、DBを構築します。

VagrantでCentOS7 + Python + Django環境を作る(その3 MariaDB)

⑥VagrantにWebアプリケーションサーバーのnginxをインストールします。

VagrantでCentOS7 + Python + Django環境を作る(その4 nginx)

⑦VagrantにDjangoをインストールします。

VagrantでCentOS7 + Python + Django環境を作る(その5 Django + uWSGI)

⑧VagrantにDjangoプロジェクト生成します。

VagrantでDjangoで作るWebアプリケーションを作る(その1 プロジェクト生成)

⑨生成したプロジェクトを初期設定します。また、データベースを初期化します。

VagrantでDjangoで作るWebアプリケーションを作る(その2 プロジェクトの初期設定)

⑩アプリケーションを生成し、モデルを作成します。

VagrantでDjangoで作るWebアプリケーションを作る(その3 アプリケーション・モデルの作成)

⑪必要であれば、DBのレコード情報を外部へ出力します。

VagrantでDjangoで作るWebアプリケーションを作る(その4 レコード情報を出力)

ホスト環境

OS Ubuntu 16.04.1 LTS 64bit
Virtualbox 5.1
Vagrant 1.9.5

ゲスト環境

OS CentOS 7.1.1503
Python 3.6.1
pip 9.0.1
Web フレームワーク Django 1.11.2
データベース MariaDB 5.5.52-1.el7.x86_64
Webサーバ nginx 1.13.2

Vagrantへログイン

①【ホスト環境】端末を開き、前回構築したVagrantのディレクトリまで移動します。

cd vagrant/django_apps/

②【ホスト環境】仮想マシンを起動します。

vagrant up

③【ホスト環境】ログインします。

vagrant ssh

firewall停止

①デフォルトで用意されているindex.htmlにHTTPアクセスできるか確認するため、firewalldを停止状態にします。

sudo systemctl stop firewalld
sudo systemctl disable firawalld

pyvenvで作成した仮想環境にログイン

前回、pyenvで仮想環境「venv_app1」を作成しました。ここにログインします。

①【ホスト環境】Vagrantの中の「venv_app1」ディレクトリまで移動します。

cd /vagrant/django_apps/venv_app1/

②【ゲスト環境】「venv_app1」を有効化します。

source ./bin/activate

以下のようなプロンプトが表示されれば有効化成功です。

(venv_app1) [vagrant@localhost venv_app1]$ 

URLを定義

先にWebアプリケーションのURLを定義します。

①以下のディレクトリに移動します。

cd /vagrant/django_apps

②「pj1/pj1/ulrs.py」を編集します。「ulrs.py」を編集することで、Djangoアプリケーション単位のURLを定義します。

vi pj1/pj1/urls.py

ここでは、 以下のURLが有効になるように設定します。

http://192.168.33.15:8000/app1/

変更前

from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]

変更後

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^app1/', include('app1.urls', namespace = 'app1'))
]

ルートのURLconfに app1.urlsモジュールの記述を反映させます。 「pj1/pj1/urls.py」に「django.conf.urls.include」のimportを追加して、 urlpatternsリストに「include()」を挿入します。

include()は他のURLconfs への参照を許可します。URLパターンをインクルードするときは、常に「include()」を使います。ただし、admin.site.urlsは例外のため不要です。

Djangoアプリケーションごとのページなどのさらに細かいURLを定義する場合、アプリケーションディレクトリ配下のurls.pyを作成して追加します。

③アプリケーションディレクトリ配下に新たに「ulrs.py」を作成します。

vi pj1/app1/urls.py

ここでは、 以下のURLが有効になるように設定します。

http://192.168.33.15:8000/app1/

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

View「Hello, world.」を定義する

Djangoアプリケーション表示を決定するViewを作っていきます。まずは最も単純な「Hello, world. You’re at the app1 index.」と表示するだけのViewを定義します。

①アプリケーションディレトクリ配下のveiws.pyを編集し、view定義します。

vi pj1/app1/views.py

編集後

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the app1 index.")

②簡易Webサーバを立ち上げます。

python pj1/manage.py runserver 0.0.0.0:8000

③ホスト環境のブラウザから、以下のURLを入力します。

http://192.168.33.15:8000/app1/

ブラウザに、以下のようなページが表示されます。

次回

次回はDjangoにBootstrapをインストールします。

VagrantのDjangoで作るWebアプリケーション(その6 Bootstrapのインストール)

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

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

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