こんにちは。のっくん(@yamagablog)です。
この記事ではDjangoでwebアプリを作るメリットをご紹介していきます。
「Djangoって何だろう?」
「Webアプリを作ってみたいんだけど、何を使えば良いんだろう?」
そんな方に読んでいただければと思います。
[toc]
ネット上に公開できる
これはDjangoに限らず全てで言えることですが、webアプリにすることでネット上に公開できます。
Pythonが好きで、例えば自分でスクレイピングするコードを書いたぜ〜って時はwebアプリにして公開するのが良いです。
他の人にPythonのコードを渡して動かしてもらってもいいですがPythonをインストールしてもらわないといけません。
webアプリにするとブラウザでアクセスできるので誰でも見ることができます。
PythonであればwebフレームワークであるDjangoを使うのがオススメです。
Pythonでコーディング → Djangoで公開する流れがスムーズです。

webアプリは、RubyとかPHPで書くこともできますができるだけ同じ言語で書いた方が良いです。
なぜなら保守するときにいろんな言語が混じってると扱いづらいですしデータのやりとりも複雑になってしまいます。
私もDjangoでwebアプリを作ってPythonAnywhereというサイトで公開しています。
Soccer Talk:掲示板アプリ
Pythonは機械学習や画像処理、スクレイピングに強いのでこれからももっと広がっていく言語です。
ちなみに、Djangoは2018年のQiita流行語大賞にも選ばれており今後普及していく可能性が高いフレームワークです。
第3位 「Django」
第2位 「AWS」
第1位 「C++」
リストや辞書が使える
DjangoはPythonのライブラリなので、当然リストや辞書が使えます。
例えば、私の作ったアプリNewScrapeのなかで集めてきたニュースをHTMLに渡す時に以下のように書いています。
def index(request): entry_num = 15 params = { 'form': SearchForm() } if request.method == 'POST': keyword = request.POST['keyword'] articles = scraping_news.scrape_news(keyword, entry_num) params = { 'articles': articles, 'form': SearchForm(request.POST) } return render(request, 'top.html', params)
paramsという辞書に集めてきたニュース記事のリストを入れてHTMLに渡しています。
Pythonユーザにとってはリストや辞書が使えるのがDjangoを使う大きなメリットです。
テンプレート生成もやり易い
先ほどの記事のリストを1つずつブラウザに表示するにはどうすれば良いのでしょうか。
Pythonに詳しい方ならfor文で回して展開すれば良いじゃんって思うと思います。その通りです。
Djangoでは、テンプレートタグという機能がありましてこの機能を使うとPythonでテンプレート(HTMLファイル)を作ることができます。
百間は一文に如かずということでコードを見てみましょう。
{% for a in articles %} <a href="{{ a.link }}" target="_blank">{{ a.title }}</a> {% endfor %}
{% %}で囲まれた部分でPythonのfor文を使っています。このコードだけで記事のタイトル一覧を表示することができます。
2018/12/15日追記:
「Pythonのfor文」ではなく、「Pythonテンプレートエンジンのjinja2のfor文」でした。ご指摘いただいた方ありがとうございます。
ちなみにテンプレートエンジンの種類ですが、Mako、Genshi、Jinja2 など色々あるみたいです。
まとめ
・Djangoはシンプルで使いやすいフレームワーク
・Djangoでは辞書やリストが使える