Djangoの概要

Djangoとは

Django(ジャンゴ)はPythonで実装されたWebフレームワークで、2005年にオープンソース https://github.com/django/django (BSD license)で公開されました。 名前の由来はジプシー・スウィングのギタリストでのジャンゴ・ラインハルト (Django Reinhardt) からとったものです。

Pythonでデータ処理からWebアプリまでを同じプログラム言語で書くことができるということで、Djangoの需要も高まって来ています。

最新版は、2017年12月に9年ぶりとなるメジャーバージョンアップされて2.0系に最新版はDjango 2.0.9 (2018/11/5現在)となります。 また2.1系もリリースされていて最新版はDjango 2.1.3 (2018/11/5現在)となります。 バージョン2.0からPython3.5以上のみがサポート対象となりました。 Python2系の場合は、Django 1.11 LTSでPython 2.7をサポートしています。

日本語の情報が少なくないといわれていますが、最近では日本語の書籍や情報も増えてきています。

Djangoの考え方

  • All In One

    • 開発者ができるだけ早くアプリケーションを完成できるように設計

  • DRY (Don't Repeat Yourself)

    • ソフトウェア開発全体において情報を重複させない

  • MTV fraemwork

    • Model, View, Templateフレームワーク

  • Reassuringly secure

    • セキュリティを担保している

参考:

Python Frameworks

top-frameworks - https://hotframeworks.com/#top-frameworks

What Python version can I use with Django? - https://docs.djangoproject.com/en/2.0/faq/install/#what-python-version-can-i-use-with-django

Django Supported Versions - https://www.djangoproject.com/download/#supported-versions

  • LTS(Long Term Support)

Djangoアプリの処理の流れ

Djangoは下記のような流れでクライアントからのリクエストの処理をします。

Djangoの特徴

  • Webフレームワークの機能が標準整備

    • URLディスパッチャー

    • O/Rマッパー

    • テンプレートエンジン

  • ユーザー認証まわりの機能が標準装備

    • ユーザーモデル、グループ、権限、ユーザーセッション

  • 管理画面の機能が標準装備

    • デフォルト機能が自動で生成される

    • ユーザー認証、コンテンツ管理、サイトマップ、RSSフィードなど多くの機能を細かい設定なしにすぐに使うことができる。

  • セキュリティ対策が万全で機能が豊富

    • XSS, CSRF, SQLインジェクション等

  • 国際化対応

  • REST APIが比較的に簡単に作成できる.

    • クライアントJacaScriptとはAPIで連携

    • Django Rest Frameworkモジュールがデファクト

  • メンテナンス性能が高い

    • 各ファイルの役割が決まっている (ファイルの修正が煩雑に感じる場合はある)

    • コード可読性は高い

PythonのWebアプリケーションフレームワーク

Flask

Flask - http://flask.pocoo.org/

軽量なウェブアプリケーションフレームワーク。WerkzeugJinja2テンプレートエンジンを基に作られている。 「マイクロフレームワーク」ともいわれシンプルで拡張性が高いことが特徴。

Tornado

Tornado - http://www.tornadoweb.org/en/stable/

スケーラブルでノンブロッキング(非同期通信)なWebサーバフレームワークで、Jupyter Notebookで使われている。 ノンブロッキングI/Oを使用することで数万のコネクションをオープンに出来るため、Node.jsのPython版ともいえる。

Bottle

Bottle - http://bottlepy.org/docs/dev/

シンプルなフレームワークで、Pythonファイルを1つで構成されている。フレームワーク初心者にとってはわかりやすいものです。

Pyramid

Pyramid - https://docs.pylonsproject.org/projects/pyramid/en/latest/

柔軟性が高く、小規模から大規模まで幅広く対応できるのが特徴。 フルスタックなDjangoとは違い、開発者が自身が各種ライブラリを組み合わせることが出来るので柔軟性が高い。