#そもそもDjangoってどういうフレームワークなの
Djangoは、私の感触ではRailsともExpressとも違う、例えの難しいフレームワークだと思っています
個人的には、ちょっとでかいExpress+大量のバッテリーと思っています
##何故そう思うか
フレームワーク自体がRailsと比べて単純な上、豊富な便利にWebサイトを作れるバッテリーを持ち合わせているからです
メリット
##単純な構成
Railsはappやconfigや色々なファイルがあるのに比べ、Djangoの場合は大抵以下のファイルしかありません
- アプリ名
- migrations
- templates(HTMLファイルを置く場所)
- 適当なHTML
- __init__.py(何もないファイル)
- test.py(テスト用。大抵後でファイルにする)
- urls.py(URLを書く所)
- models.py(モデルをORMで書く所)
- forms.py(フォームに関する記述)
- apps.py(アプリ名)
- views.py(URLに応じて色んな処理をする所)
この構成だとviewsが長くなる問題点がありますが、分割したりロジックだけ別コードに書き出したりするという手段が使えるので、意外と問題が生じません
##豊富なバッテリー
- 自動生成されるAdminページ(データを管理出来る所)
- CRUDフォームが簡単に作れる
簡単にCRUDフォームが作れる
色々書くと長くなるので端折りますが、例えばユーザーの新規作成は以下だけで出来ます
from django.contrib.auth.forms import UserCreationForm
from django.views.generic.edit import CreateView
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
class CreateUser(CreateView):
model = User
form_class = UserCreationForm
template_name = "user.html"
def get_success_url(self):
return reverse('index')
importが長いのはPythonの仕様なので諦めて下さい
このコードから、Djangoの以下の特徴を導き出せます
- そもそもUserモデルが自動生成されている
- モデルの新規作成を割と簡単に出来る
その上、標準でまともな暗号技術を使ってくれる為、暗号技術を知る必要性も無いので楽です
地味にカバー範囲が広い
他の記事でも書きましたが、ストリーミング配信にも対応している為、SSEにも理論上は対応可能です
デメリット
割とレガシー
標準ではSassもBabelもTypeScriptも使えませんし、使えるようにする処理が結構めんどくさいです
日本語の情報が少ない
日本での使用例が少ない為、当たり前のように英語を読まされる事になります
それに、日本人同士での情報交換がしにくかったり、仕事が少なかったりします
そんなに速くない
フルスタックフレームワークなので仕方ない箇所ではありますが、他のフレームワーク等と比べて速度面での優位性はそこまでありません
CSRF Tokenがウザい
Ajaxを使うとCSRF Tokenを通さないとブロックされます、地味にウザいのが問題です
デメリットをカバーする方法
- Django REST Frameworkを使い、フロントエンドはNodeに全て丸投げする
- 英語を覚える
- ロジック箇所がボトルネックになっている場合は、PyPyにぶん投げる
- セキュアなことに安心感を覚える
最後に
この記事でDjango使ってみようと思う方が居たら幸いです
それと、私の腕で分析出来る範囲はこの程度ですので、補足等が出来る方がいらっしゃったらぜひお願いします