仮想環境の作成
Pythonの仮想環境(venv)を作成します。ここで言っている仮想環境とはVirtualboxやVMwareなどのVMのことではなく、Pythonのライブラリを所定のディレクトリに隔離する為の仮想環境の作成になります。今回は例としてホームディレクトリに.venvという名前で仮想環境を作成します。
$ cd ~
$ python3 -m venv .venv
PyPIパッケージのインストール
MariaDBパッケージのインストール
データベースはMariaDBを使用します。DjangoからMariaDB(MySQL)にアクセスする場合、mysqlclientライブラリが必要です。mysqlclientライブラリをインストールするためには予めmariadb-develパッケージが必要になります。
$ yum install mariadb-server mariadb-devel
PyPIパッケージのインストール
venvのアクティベートを行い、仮想環境上にdjango, mysqlclient, uwsgiをインストールします。
$ source .venv/bin/activate
(.venv) $ pip3 install django mysqlclient uwsgi
Collecting django
Using cached Django-2.0-py3-none-any.whl
Collecting mysqlclient
Using cached mysqlclient-1.3.12.tar.gz
Collecting uwsgi
Using cached uwsgi-2.0.15.tar.gz
Collecting pytz (from django)
Using cached pytz-2017.3-py2.py3-none-any.whl
Installing collected packages: pytz, django, mysqlclient, uwsgi
Running setup.py install for mysqlclient ... done
Running setup.py install for uwsgi ... done
Successfully installed django-2.0 mysqlclient-1.3.12 pytz-2017.3 uwsgi-2.0.15
Djangoプロジェクトの作成
DjangoでWebアプリ開発をするには、まず最初にプロジェクトを作成する必要があります。プロジェクトとは、データベース設定やDjango固有のオプション、アプリケーション固有の設定をまとめたものです。プロジェクト内に複数アプリケーションを作成することができます。
$ source ~/.venv/bin/activate
(.venv) $ django-admin startproject myproject
(.venv) $ tree myproject
myproject/
├── manage.py
└── myproject
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
1 directory, 5 files
開発用サーバーの起動
デフォルトだとlocalhost:8000で待ち受けしてしまうので、VM上に構築されたものアクセスする場合は待ち受けするソケットを指定する。今回の場合は0.0.0.0:8000で待ち受けする。本番環境でアプリを起動する場合は、uwsgiなどのアプリケーションサーバーを使用してください。
(.venv) $ python3 manage.py runserver 0.0.0.0:8000
Performing system checks...
System check identified no issues (0 silenced).
You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
January 01, 2018 - 12:08:55
Django version 2.0, using settings 'myproject.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
ブラウザでhttp://[IPアドレス]:8000で以下のようなデモ画面が表示されればOKです。
Djangoアプリケーションの作成
Djangoアプリケーションを作成します。アプリケーションとは、実際に何らかの処理をするPythonパッケージです。Pythonパスが通るところならどこに配置しても良いです。ここではmyprojectプロジェクト配下にmyappアプリケーションを作成します。
$ source ~/.venv/bin/activate
(.venv) $ cd myproject/
(.venv) $ python3 manage.py startapp myapp
(.venv) $ tree myapp
myapp
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
1 directory, 7 files
Viewの作成
続いてViewを作成します。ここで少し話が脱線してしまいますが、DjangoでいうところのViewはMVCモデルのControllerに相当します。MVCモデルのWAF(WEBアプリケーションフレームワーク)を使ってきた人は頭が混乱すると思いますが、Controller->View, View->Templateという対応になっていると思っていただければいいと思います。ここでは”Hello, World!”という文字列を返すだけの簡単なViewを作成します。
# myapp/views.py
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, World!")
アプリケーションのURLconf作成
myappアプリケーションのURLconfを作成します。URLconfとはどのURLにアクセスしたら、どのクラスのどのメソッドを呼び出すかのルールを書いたものです。一般的なWAFなどではルーティングと言ったりします。
# myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
プロジェクトのURLconf修正
プロジェクトのURLconfに先ほど作成したアプリケーション(myapp)をインクルードします。”/myapp/”にアクセスすると、myapp.views内のindexメソッドが呼び出されるという感じです。
# myproject/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('myapp/', include('myapp.urls')),
path('admin/', admin.site.urls),
]
myappアプリケーションへのアクセス
先ほど起動したように開発用サーバーを起動しmyappにアクセスしてみます。以下のように”Hello, World!”の文字列が返却されればOKです。
コメント