Djangoプロジェクトとアプリケーションの作成

記事内に広告が含まれています。

仮想環境の作成

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です。

コメント

タイトルとURLをコピーしました