37
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

経験1年の人間が考える、Djangoの利点・欠点

Last updated at Posted at 2016-11-10

#そもそも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フォームが作れる

色々書くと長くなるので端折りますが、例えばユーザーの新規作成は以下だけで出来ます

views.py
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使ってみようと思う方が居たら幸いです
それと、私の腕で分析出来る範囲はこの程度ですので、補足等が出来る方がいらっしゃったらぜひお願いします

37
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?