
そんな疑問を解消するために、この記事ではPythonでWebサイトを作ることはできるのか?できるとしたらどういった方法で作っていったらいいのかを書いていきたいと思います。
- PythonでWebサイトは作れるのか
- FlaskでWebサイトを作る

Webサイトとは
PythonでWebサイトを作るっていうと、個人的にあちょっと変な感じがしてしまうのでWebサイトっていう認識を合わせたいです。
WebサイトはHTML/CSSで作れる
静的なWebサイトの場合HTMLとCSS、動きを激しくしたかったらJavaScriptを使えば作ることができます。例えば、TEMPLATE PARTYからテンプレートをダウンロードしてブラウザで見てみるとこんな感じ。
フォルダの構成はこのようになっていて、HTMLファイルとCSS、JavaScriptだけでできています。
├── about.html
├── base
│ ├── 0.png
│ ├── 1.jpg
│ ├── 2.jpg
│ ├── 3.jpg
│ ├── footer_logo.png
│ └── logo.png
├── confirm.html
├── contact.html
├── css
│ ├── keyframes.css
│ ├── slide.css
│ └── style.css
├── finish.html
├── form.html
├── images
│ ├── 0.png
│ ├── 1.jpg
│ ├── 2.jpg
│ ├── 3.jpg
│ ├── arrow2.png
│ ├── arrow3.png
│ ├── footer_logo.png
│ ├── icon_facebook.png
│ ├── icon_instagram.png
│ ├── icon_menu.png
│ ├── icon_twitter.png
│ ├── icon_youtube.png
│ ├── logo.png
│ ├── sample1.jpg
│ └── sample2.jpg
├── index.html
├── js
│ ├── ddmenu_min.js
│ ├── fixmenu.js
│ ├── fixmenu_pagetop.js
│ └── openclose.js
├── recruit.html
└── works.html

HTMLとCSSだけでWebサイトを作ってレンタルサーバーにでもアップロードすれば、インターネットに公開することもできます。ユーザーの入力などがない静的なサイトならば、Pythonを別に使わなくても大丈夫です。
Pythonを使ってWebサイトを作りたい場合
おそらくこのページを見ているあなたは、そんなことを百も承知ながらPythonを使ってWebサイトを作りたいと思っているのでしょう。もちろんそういったことも可能でDjangoやFlaskといったフレームワークを使えばそれなりに簡単に作ることができます。
もちろんHTML/CSS/JavaScript以外の知識も必要になってくる。
- DBの知識
- フレームワークの知識
- ・・・
単純にHTML/CSSでWebサイトを作るより知らないといけないことも増えます。デプロイ作業も面倒になりますしね。
Pythonを使うならWebサイトじゃなくてWebアプリケーション
Webサイトとは書いたけど、Pythonを使って画面がある何かを作るっていうことはそれはユーザーの入力によって画面表示が変わったり、Pythonで処理したい何かをするWebアプリケーションになるはずです。(もちろん単純な静的なページも作れますが、それだとPython使う意味がないです。)
Pythonを使うなら以下のようなイメージの機能が欲しいんじゃないだろうか。
- ユーザーが入力したものをDBに保存する
- DBにあるものを表示したい
- フォームから送信されたものをPythonで処理したい
- ・・・
もしも静的なページもPythonで作りたいっていうのは練習で作ってみるぐらいならいいですが、普通にHTML/CSSのみで作ることをお勧めします。
FlaskでWebサイトを作成してみる
せっかくなので、Pythonを使う意味のないサイトを作ってみます。単純にFlaskを使ったWebサイトのサンプル。
Flaskは結構シンプルでDjangoほど機能がなくコンパクトにまとまっています。
今回はただDBのやり取りなどはせずに、画面表示だけさせるようにします。単純にルーティングで画面を表示させるだけなので、index.htmlを指定するだけです。
from flask import Flask, render_template
app = Flask(__name__, static_folder='./templates/images')
@app.route('/', methods=["GET"])
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
index.htmlではさっき例としてみたTEMPLATE PARTYのテンプレートを使ってやってみることにします。
CSSと画像もとりあえず表示できるようにフォルダの中に組み込んで表示してみるとこんな感じです。
これはFlaskで作ったものを動かしているけど、さっき例としてみたサイトと同じようになりましたね。
静的なページならPythonはいらない
ただこういう静的なページだけなら、さっきも書いたようにわざわざPythonを使う必要はありません。HTMLとCSSとJavaScriptで済んでしまいますので。
もしPythonを使いたいんだったら、入力したものをDBに保存するとかPythonで処理したい何かがあるとかそういうのがあるといいですね。