Python

PythonのDjangoを使ってWebアプリを実装しHerokuでデプロイしていくステップ

Django heroku
ウマたん
ウマたん
本記事では、PythonのDjangoを使って簡易的なWebアプリケーションを作成し、さらにそれをHeokuというサービスにデプロイしていく方法についてまとめていきます!Djangoは簡単にWebアプリケーションを作成できるフレームワークであり、慣れれば誰でも簡単に扱うことが可能です!

こんにちは!

消費財メーカーでデータ分析・デジタルマーケティングをやっているウマたん(@statistics1012)です!

Pythonには有名な2大フレームワーク、Flask・Djangoがあるのですが、どちらも非常に使いやすく簡単にPythonでWebアプリケーションを作成することが出来てしまうのです。

ただ、Webアプリケーションを開発してもそれを実際に世の中に公開するところに苦労することが多いです。

そんな苦労を解消してくれるのがHerokuというサービス!

この記事では、PythonのDjangoというWebフレームワークを使ってWebアプリケーションを作成し、それをHerokuにデプロイしていくステップを解説していきます!

Djangoの特徴

Django(引用元:https://docs.djangoproject.com/ja/3.0/

まずは、簡単にDjangoの特徴について解説していきます。

Djangoは2005年に開発されたDjangoのWebアプリケーションフレームワークで、デフォルトでWeb開発に必要な機能が一通り入っています。

Djangoは元々ニュースサイト管理のためにアメリカで開発されたフレームワークで、名前はギタリストから取ったそうです。

大規模サービス開発に向いていて2000企業ほどの企業に利用されています。

ロボたん
ロボたん
そんなに多くの企業に使用されているんだねー!!
ウマたん
ウマたん
Djangoが扱えると多くのサービスを開発できるよ!

UGC型のインスタグラムやピンタレストなどに主に利用されています。

Django利用企業(引用元:https://stackshare.io/Django)

Djangoのドキュメントは以下です。

ちなみにDjangoより後に開発されたWebフレームワークFlaskも簡易的にWebアプリケーションを作成できるのでオススメです。

macとsurface
PythonのFlaskで簡単なWebアプリケーションを作ってみよう!当サイト【スタビジ】の本記事では、Pythonの軽量WebアプリケーションフレームワークであるFlaskを使って簡単なWebアプリケーションを作成していきたいと思います。Pythonを開発言語としても使えるようになると、幅が広がりますよー!...

DjangoとFlaskの違いについては簡単に以下の記事でまとめていますのでよければチェックしてみてください!

Flask Django
Flask vs Django!PythonのWebアプリケーションフレームワークを徹底比較!当サイト【スタビジ】の本記事では、PythonのWebアプリケーションフレームワークである「Flask」と「Django」の違いを徹底的に比較していきます!なんとなーく分かっているようで分からない2つのフレームワークの違いをこの機会にしっかりおさえておきましょう!...

DjangoでWebアプリケーション開発のチュートリアル

Goal

それでは早速Djangoを使ってWebアプリを開発していきましょう!

と言っても一旦Hello worldを出力するところまでのチュートリアルです。

Pythonは入っている前提で話を進めていきます。

以下のステップでおこなっていきましょう!

OS:MAC
開発エディター:Visual studio code

仮想環境作成

まずは、好きな名前のフォルダを作成しフォルダのディレクトリに遷移しましょう!

そして以下のコマンドをVisual studio code上のターミナルに記載して仮想環境を作っていきます。

これでmyvenvという仮想環境を作ることが出来ました。

仮想環境は開発するアプリケーションによってPythonのライブラリのバージョンを管理するために作ります。

続いて仮想環境に入っていきます。

以下のコマンドで仮想環境に入ることが出来ます。

必要なライブラリをインストール

仮想環境に入ったら、requirements.txtというファイルを作成し必要なライブラリをインストールしていきます。

これは、ライブラリを一括でインストールするためのファイルです。

厳密にはrequirements.txtである必要はありませんが、慣習でrequirements.txtが使われることが多くなっています。

必要最低限のライブラリを記載しておきましょう

Django==3.1.5
django-heroku==0.3.1
gunicorn==20.0.4

以下のように記述することで、記載したライブラリをインストールすることができました。

ちなみに以下のように記述することで現在の環境のライブラリを一括でrequirements.txtに記述して保存することができます。

普段使っている環境から新しい環境に同様のライブラリを適用される場合はこのように記述するとよいでしょう。

プロジェクトの作成

さて、ここから実際にDjangoでWebアプリ実装をおこなっていきます!

まずDjangoのプロジェクトを作成していきます。

mysiteという名称で作っていきましょう!

これにより以下のようにMysiteディレクトリが出来ます。

Django

続いて、settings.py以下の部分を以下のように変更しておきましょう!

【変更前】

【変更後】

続いて、この後作るアプリケーション名をsettings.pyのINSTALLED_APPSに記載しましょう!

今回はappという名前のアプリを作成していく予定なので、以下のように記述します。

続いてデータベースのセットアップを行っていきます。

これによりデータベースが作成されます。

db.sqlite3という名前でデータベースファイルが作成されているかと思います。

さて、それでは以下のようにサーバーを起動させてみましょう!

 

Starting development server at http://127.0.0.1:8000/

ターミナルに出力されたURLを開き以下のように表示されたらひとまず成功です。

Django チュートリアル

サーバーの起動はCtrl+Cで停止で止めることが可能です。

Appを作成

プロジェクトが立ち上がったのが確認できたのでアプリケーションを作成していきましょう!

ロボたん
ロボたん
プロジェクトとアプリケーションの違いは以下って??

プロジェクトとアプリケーションの違いは以下です。

プロジェクトとアプリの違いは何でしょうか? アプリとは、ウェブログシステム、公的記録のデータベース、小規模な投票アプリなど、何かを行う Web アプリケーションです。プロジェクトは、特定のウェブサイトの構成とアプリのコレクションです。プロジェクトには複数のアプリを含めることができます。 アプリは複数のプロジェクトに存在できます。
(引用元:Django公式サイト

複数のアプリケーションを束ねる存在がプロジェクトであるイメージです。

以下のコマンドでアプリケーションを作成していきます。

appという名前で作成しておきましょう!

appのディレクトリが出来ているはずです。

urls.pyを変更

Mysiteのurls.pyを開いて一部設定を変更します。

【変更前】

【変更後】

この部分の意味はトップドメインに遷移した場合はappフォルダのurls.pyファイルを参照してねという意味です。

さて続いて、その参照元となっているapp/urls.pyを作成していきましょう。

app/urls.pyはデフォルトでは作成されていないので、自分で作ります。

views.pyを修正

views.pyはappのファイルの中でユーザーのコールに対してどのテンプレートを出すかなど司令塔の役割をします。

サッカーで言うミッドフィルダーみたいな役割のファイルです。

ここには、以下のように記述します。

Djangoには簡単に表示をしてくれるテンプレートが用意されており、今回はその中からTemplateViewを使います。

ここでは、後ほど作成するapp/index.htmlを呼んでいます。

templatesフォルダにhtmlファイルを作成

templatesフォルダを作成し、そのさらに配下にappというフォルダを作成しましょう!

そしてその下にindex.htmlというファイルを作成します。

すなわちディレクトリ構造は以下のようになっています。

app/templates/app/index.html

この時アプリケーション名appと一致させたディレクトリ名にしましょう!

ロボたん
ロボたん
なんでこんな階層になるのー??
ウマたん
ウマたん
これはテンプレートのミスマッチをなくすためなんだ!

Django は、名前がマッチした最初のテンプレートを使用するので、もし 異なる アプリケーションの中に同じ名前のテンプレートがあった場合、Django はそれらを区別することができません。そのため、Django に正しいテンプレートを教えてあげる必要がありますが、一番簡単な方法は、それらに 名前空間を与える ことです。アプリケーションと同じ名前をつけた もう一つの ディレクトリの中にテンプレートを置いたのは、そういうわけなのです。
(引用元:Django公式サイト

index.htmlには表示したいhtmlを記載してあげましょう!

これで本当に基本的なアプリケーションが作成できました。

改めて

をしてみましょう!

Hello worldがしっかり表示されたら成功です。

ここまで出来れば、後はアプリケーションに肉付けをしていくだけです。

Djangoで作ったWebアプリケーションをHerokuにデプロイ

Coding

さて、続いて先ほどのアプリケーションはローカル環境で実装しました。

このアプリケーションを一般にデプロイするためにHerokuというサービスを利用していきます。

Herokuでのデプロイ方法は詳しくは以下の記事も参考にしてみてください。

heroku
herokuを使ってPythonのflaskで作ったアプリケーションをデプロイする方法と注意点!当サイト【スタビジ】の本記事では、PythonのWebフレームワークであるFlaskを使って作成したWebアプリケーションをインターネット上に公開するためにHerokuというサービスを使ってデプロイしていきます。Herokuを使えば簡単にWebアプリケーションを公開することが可能なんです。...

ファイルの準備とsettings.pyの修正

必要なファイルは以下です。

Procfile
runtime.txt

Procfileには以下のように記述します。

プロジェクト名を記載してgunicornを動かしましょう!

これはDjangoをローカルで起動させる時にmanage.py runserverの役割をやってもらうイメージです。

続いてruntime.txtには以下のように記述します。

現在使っているPythonのバージョンをここに記載するようにしましょう!

またsettings.pyに以下のように追記しましょう!

herokuにデプロイ

それではここからherokuにデプロイしていきます。

当たり前ですが、herokuのアカウント作成とインストールが必要になります。

herokuサイトに移動し、アカウントを作成してください

heroku

アカウントを作成し、ログインした後は以下のコマンドでインストール(Mac)

Windowsの場合はこちらからダウンロードしてください。

さて、ターミナル上で以下のコマンドを打つことでherokuにログインすることが出来ます。

キーを押してしばらくするとherokuのブラウザが開きます。

heroku

ブラウザ上からログインしましょう!

さてローカルで実装したファイルをherokuの環境にコミットしていきますよー!

まずherokuのアプリケーションを作成していきます。

 

今回はdjango-test1111という名前のアプリケーションにしました。

続いて以下のコマンドでローカルで実装したファイルをコミットしていきましょう!

 

さらに最後に以下のコマンドでherokuへのデプロイが完了します。

少し時間がかかりますが、HerokuアプリのURLが表示されると思うのでそちらをクリックしてアプリを開きましょう!

Django チュートリアル

Hello worldと表示されたら成功です。

リモートレポジトリにherokuがないよーと怒られることがあります。

そんな時は以下のようなコマンドでherokuを追加してあげましょう!

git remote add heroku https://git.heroku.com/[アプリケーション名].git

git remote add heroku https://git.heroku.com/django-test1111.git

Djangoを勉強する方法

pc python

ここまでで本当に初歩の初歩であるHello worldを出力するまでですが、DjangoによるWebアプリケーションを作成してHerokuによってデプロイする方法について見てきました。

この流れが一旦把握できれば、後は肉付けしていくだけで複雑なWebアプリケーションも作成可能です。

ここからより複雑なWebアプリケーションをDjangoを勉強する方法について紹介していきます。

UdemyのDjangoコース

Udemy コース
【オススメ度】
【レベル】初級~中級
【価格】1200円〜

Djangoの勉強に是非活用してほしいのがUdemy

Udemyは世界最大の教育プラットフォームで世界中の様々なプロフェッショナルが良質なコンテンツを公開しており、それを買い切りで1200円ほどから受講できるサービスです。

購入後も30日間返金無料ですので安心して講座を購入することが出来ます。

特に以下のコースがオススメです!

【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!

Udemy Django
【オススメ度】
【講師】CODOR代表取締役CEO
【時間】19時間
【レベル】初級~中級

基本的な部分から分かりやすく解説してくれるUdemyの中でもオススメの講座です。

To do アプリや社内SNSアプリを作っていきます。

また、VPSサーバーを借りて実際に作成したアプリケーションをデプロイしていく過程も学ぶことが出来るので非常に勉強になるコースです。

\30日間返金無料/

PyQのDjango講座

PyQ トップページ

公式サイト:https://pyq.jp

【オススメ度】
【レベル】初級
【価格】3040/月〜

PyQはPythonに特化したサービスです。

完全オンライン学習サービスで、定額制で全ての講座を受講することができます。

実際に手を動かすことをかなり重視しているので、楽しくモチベーションを保ちながら進めることが可能です。

網羅的にPythonのコースがあるので、もちろんDjangoのコースもしっかり用意されています。

以下の記事でPyQの体験を基に詳しくレビューしています。

【体験談】PyQの評判は?3か月本気でPythonを勉強してみたので徹底レビュー!PyQはPythonを学ぶ上で非常にオススメで評判の高いサービスです。ただ、他のサービスとの違いが分かりにくいのも事実。そこで当サイト【スタビジ】では、実際にPyQを3か月体験した僕がPyQのメリット・デメリット・評判について徹底的にレビューしていきます!...

以下の記事でDjangoの学習にオススメなサイトを学習の際の注意点についてまとめていますので是非目を通しておいてください!

Django 学習
Djangoの学習におすすめのサイトと勉強を進める注意点 こんにちは! 消費財メーカーでデータサイエンティスト・デジタルマーケターをやっているウマたん(@statistics101...

Djangoで実装したWebアプリをHerokuで実装 まとめ

Djangoで実装したWebアプリをHerokuで実装することで、Webアプリケーションを0から作り世の中に発信していく道筋が見えてきましたね!

ロボたん
ロボたん
Djangoをなんとなーく理解することができたよ!
ウマたん
ウマたん
ここからしっかりDjangoを学んで自分のものにしていこう!

ぜひさらに深くDjangoを勉強して自分の作りたいWebアプリケーションを作成していきましょう!

以下の記事でPythonでのWebアプリ開発についてFlaskでの実装と合わせてまとめています!

Webアプリ開発
【入門初心者向け】PythonのフレームワークでWebアプリを開発する方法を徹底解説!当サイト【スタビジ】の本記事では、PythonのWebアプリケーションフレームワークを用いてWebアプリを開発していく方法を徹底解説していきます。実際にDjangoでの実装とFlaskでの実装をおこなっていったあと、勉強法についても見ていきましょう!...

以下の記事でPythonの勉強法についてまとめています!

Python 勉強
【入門】初心者が3か月でPythonを習得できるようになる勉強法!当ブログ【スタビジ】の本記事では、Pythonを効率よく独学で習得する勉強法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。Pythonをマスターして価値を生み出していきましょう!...

また、以下の記事でPythonのスクールについてまとめています!

Python おすすめ スクール
【2020年最新】Python学習に最適なオンラインスクールおすすめ6選当サイト【スタビジ】の本記事では、実際にスクールに通ったりWebサービスを利用したりしながらPythonを習得した僕がおすすめするオンラインメインのスクールを紹介していきます。正直Python学習スクールは乱立し過ぎていてどれを選べばよいのか難しい!そんな人にぜひ読んで欲しいです...
Pythonを初学者が最短で習得する勉強法

Pythonを使うと様々なことができます。しかしどんなことをやりたいかという明確な目的がないと勉強は捗りません。

Pythonを習得するためのロードマップをまとめましたのでぜひチェックしてみてくださいね!