【Python】Djangoとは?DjangoでWeb開発の基礎を学ぼう

Djangoとは

Django(ジャンゴ)とは、WEBアプリケーションを作るためのフレームワークです。
フレームワークとは、アプリケーションを作成する上で内容がパターン化できる作業を簡略化し、能率を上げるものです。Python製のフレームワークはいくつか挙げられますが、Djangoは学習コストがやや高めな一方様々な機能を取り込めることが可能です。

Djangoのインストール

pipコマンドで、Djangoをインストールできます。

pip install django

Hello Worldを表示させてみよう

このテキストでは、手始めにHello Worldを表示させるだけの簡単なアプリケーションを開発してみましょう。今回作成するDjangoプログラムをtcloneという名前にします。作業をするためのディレクトリを作成しましょう。この作業ディレクトリの名前はai_academyとします。

mkdir ai_academy

ディレクトリを作成できましたので、作成した作業ディレクトリにcdコマンドで移動します。

cd ai_academy

作成するDjangoプログラムをプロジェクトと言います。その中で、個々の機能をアプリケーションという単位で管理していきます。ここでの命名は、以下のようにします。・プロジェクト名: tclone・アプリケーション名: indexまずは、tcloneというプロジェクトを作成します。以下のコマンドを実行してください。

django-admin startproject tclone

プロジェクトのディレクトリに移動します。

cd tclone

このプロジェクトに以下のアプリケーションを作成します。次のコマンドを実行してください。indexというフォルダが作成されます。

python manage.py startapp index

・作成されたindexフォルダの構成

.
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py

1 directory, 7 files

クライアントからアクセスがあったら、Django内では以下の流れでクライアントに処理を返していきます。1. 設定ディレクトリ(この場合は、ai_academy/tclone)内のurls.pyでどのアプリケーションに処理を渡すか決定2. 1.で決定されたアプリケーション内のurls.pyで、同ディレクトリ内のviews.pyでどのアクションを動かすか決定2. アクション発動3. アクションの結果(例:データベースからデータを持ってくる)をクライアントに返す それでは、その流れに従って、urls.pyを設定していきましょう。なお、今回はadminアプリケーションは使わないため、コメントアウトします。該当部分を以下のように修正してください。また必ず、includeの追加も忘れないようにしてください。

 1)2行目にincludeを追加

2) path('admin/', admin.site.urls),のコメントアウト

3). path('', include('index.urls'))を追加 

ai_academy/tclone/tclone/urls.py

from django.contrib import admin
from django.urls import path,include # includeを追加

urlpatterns = [
#  path('admin/', admin.site.urls), #コメントアウト
   path('', include('index.urls')), #こちらを追加
]

上記、includeの読み込みのコードの追加と、コメントアウトと追加の3点修正完了出来ましたでしょうか。それでは今回設定したファイルの意味を解説いたします。

例えば、ヤフー!ジャパンのyahoo.co.jpにアクセスをしたとします。このyahoo.co.jpをURLと言います。そして、yahoo.co.jpの後に何もつけないURLをトップページと言います。

さて、今回のtcloneプロジェクトのトップページは6行目で定義されています。path('', include('index.urls'))と記述がありますが、path関数の第一引数はシングルクオートで囲まれていますが、中身はありません。

つまり、何もつけないので、こちらはトップページを示しています。後半のindex.urlsは、indexアプリケーション内のurls.pyに処理を引き継ぐという意味です。ここまでの話をまとめると、tcloneプロジェクトのトップページにアクセスがあったら、indexアプリケーションのurls.pyに処理を引き継ぐということになります。それでは、indexアプリケーション内のurls.pyを設定します。

indexディレクトリ内にurls.pyファイルを作成し、以下の内容にします。

 ai_academy/tclone/index/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

indexアプリケーション内のurls.pyでの設定は、先ほどと同じようにがあります。これは、indexアプリケーション内トップページにアクセスがあった場合を示しています。その次にviews.indexとあります。これは、views.pyindexアクションを呼び出すことを示しています。次に、indexアプリケーションを設定ファイルに追加する必要があります。以下のファイルの該当部分に追加をします。

ai_academy/tclone/tclone/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'index', # こちらを追加
]

今度はHello Worldを表示する画面の設定をします。indexディレクトリ内にtemplatesディレクトリを作成し、その中にもindexディレクトリを作成します。その内部にindex.htmlというファイルを作成します。ファイルには以下の内容を記述します。 

ai_academy/tclone/index/templates/index/index.html

<h1>Hello World</h1>

最後にindexアプリケーションのviews.pyにアクションを追加します。以下の内容を記述してください。 

ai_academy/tclone/index/views.py

from django.shortcuts import render

def index(request):
    return render(request, 'index/index.html')

この状態で以下のコマンドを実行します。サーバを起動させることができます。ディレクトリを移動していたら、manage.pyのあるai_academy/tcloneディレクトリ内で実行します。

python manage.py runserver

この状態でhttp://127.0.0.1:8000をブラウザで開きます。Hello Worldと画面に表示されたはずです。

Pythonを効率よく学ぶには?

Pythonを効率よく学ぶには、普段からPythonを利用している現役のデータサイエンティストや機械学習エンジニアに質問できる環境で学ぶことです。
質問し放題かつ、体系的に学べる動画コンテンツでデータ分析技術を学びたい方は、オンラインで好きな時間に勉強できるAI Academy Bootcampがオススメです。受講料も業界最安値の35,000円(6ヶ月間質問し放題+オリジナルの動画コンテンツ、テキストコンテンツの利用可能)なので、是非ご活用ください。