Djangoとは
今回は最近、人気沸騰中のPythonを使ったWebアプリケーションフレームワークのDjangoについて紹介します。
もともとRuby on Railsを少しかじろうとした自分ですが、結局TensorFlowやスクレイピング技術を使ったWebサイトを作ろうとしたときに、
Pythonの方がなにかと便利だったので、少しずつDjangoの勉強をしました。
一度、Flaskという超簡素なWebアプリケーションフレームワークを使ったこともあるのですが、
あまりにも簡素だったため、Djangoの勉強に切り替えました。
DjangoはRuby on Railsと同じMCVフレームワークなので、個人的にはかなり取っつきやすかったです。
しかし何より日本語の参考文献、サイトが少ない!(今はどうか分からないけど)
ということで、この記事で導入までを解説したいと思います。
環境構築
WindowsでのPythonインストール
とりあえずこのサイトを見ながらPythonをインストールしましょう。
インストールまでは便利なサイトが多数あるので、ここでは詳しく解説しません。
勉強したて当初は、「プログラミングといえばMacだ!」なんてことを思い、本気でMacの購入を検討しましたが、
結局自分が買うような価格帯のPCだったらWindowsの方が圧倒的にコスパがいいので、
未だにWindowsを愛用しております。
Djangoのインストール
Djangoを動かす上で、Anaconda3という実行環境もセットで用意させる文献やサイトが多いですが、
今回はとりあえずDjangoを動かせればよいので、無視します。
ちなみにAnaconda3で実行するメリットは、数的処理をおこなうライブラリが充実しているため、
TensorFlowを動かす際などは、非常に役に立つのです。
ぼくは非エンジニアなので、詳しいことはよく分かりませんが、
もし他にメリットがあれば、もしくはそもそも目的が違うということなら教えていただけると嬉しいです。
今回は非エンジニアならではで、Windows PowerShellを使ってインストールしてみましょう。
Pythonインストール後、Windows PowerShellを開き、
pip install django
と入力します。
これでDjangoのインストールは完了です。
プロジェクト・アプリの作り方
プロジェクト・アプリの考え方
次にプロジェクトとアプリを作っていくわけですが、
そもそもプロジェクトとアプリって何ぞや、ということを解説していきます。
例えば今回、会員制のWebサイトを作りたい場合、
プロジェクトが「会員制Webサイト」で、
アプリは「本サイト」「ログイン機能」「顧客管理アプリ」などになります。
ということなので、今回はwebsiteというプロジェクトを作ってみましょう。
プロジェクトの作り方
同じくWindows PowerShellを開いた状態で、以下の記述をします。
django-admin startproject website
するとPowerShellが現在表示している場所で、websiteというフォルダが自動的に作られます。
PowerShellのデフォルト実行画面は「ユーザー」なので、デスクトップで作成したい場合は
cd desktop
と入力してから、django-admin startprojectを実行してあげます。
websiteフォルダの中には、同じ名前のwebsiteというフォルダや、manage.pyが生成されていると思います。
/website/websiteには、setting.pyやurls.py、wsgi.pyといったプロジェクトを管理する上で重要なpythonファイルが入っています。
またmanage.pyも実際にプロジェクトを動かすうえで必要なプログラムが記載されたファイルなので、
下手にいじるとプロジェクト自体が動かなくなってしまうので注意です。
プロジェクトの起動
それでは早速、作成したプロジェクトを確認してみましょう。
プロジェクトの起動は、先ほど紹介したmanage.pyで行います。
まずmanage.pyがある階層に移動する必要があるため、
cd website
上記のコマンドで移動します。
そのうえで、
python manage.py runserver
と入力すれば、manage.py内のrunserverというプログラムが動き、
サーバーが起動します。
Starting development server at http://127.0.0.1:8000/
という文字列があれば成功です。
早速、 http://127.0.0.1:8000/ にアクセスしてみましょう。

こちらの画面ができたら成功です。
アプリの作り方
最後にアプリの作成です。
今回はとりあえずなので、mainというアプリを作ってみましょう。
先ほどと同じく、manage.pyというファイルを使って作成をします。
python manage.py startapp main
こちらのコマンドで、新しいアプリが作成されます。
詳しい説明は置いといて、とりあえずHello worldまで解説します。
まず新しくできたmainフォルダの中にある、views.pyを開き
以下のようなプログラムを書き加えます。
from django.shortcuts import render from django.http import HttpResponse def index(request) return HttpResponse("Hello World!")
そして最後に、urls.pyに追記を行います。
注意しないといけない点としては、
今回追記を行うurls.pyは/website/mainフォルダにあるものではなく、/website/websiteフォルダにあるものです。
/website/websiteフォルダ内にあるurls.pyには、既に以下のようなコードが書いてあります。
from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ]
こちらを、以下の記述に変更します。
from django.contrib import admin from django.urls import path import main.views as main urlpatterns = [ path('admin/', admin.site.urls), path('main/', main.index), ]
このように設定変更したうえで、改めてサーバーを立ち上げてみましょう。
立ち上げ方は先ほどと同様です。
python manage.py runserver
そしてURLは、/mainというアプリなので
http://127.0.0.1:8000/main/
となります。
無事、Hello World!が表示されれば完了です。
最後に
Ruby on Railsの勉強をはじめたキッカケは
「Rubyが分からなくてもできる」という謎の噂でした。
実際触ってみると、確かにRubyが分からなくてもできるけど、
応用をしたいとき、どうしてもつまづいてしまいます。
それはDjangoも同様で、そもそもPythonが分からないとWebサイトの構築は難しいです。
Pythonは比較的感覚的に分かりやすい言語な気がするので、ぜひ皆さん学んでみてください。
特にスクレイピングは、BeautifulSoupやseleniumなど、分かりやすいライブラリが充実しているので、
比較的簡単にプログラムを作ることができます。
Djangoはまだ自分も勉強中ですが、結構わかりやすくておススメです。
非エンジニアのみなさん、がんばりましょう。