【忘備録】Django1.10の基本的なこと【Django環境構築】

Django、初めて触ったので覚書き。Flask使いたい

ついでにDjangoの比較的新しいバージョンの日本語の記事あまり見ないので記載。

 

【そもそもDjangoって】

PythonのWebアプリケーションフレームワークです。雑に言うとRailsと同じようなもの。

Railsって言語じゃないのって人たまにいるけど、違います、フレームワークです。

Pythonに関して言えば、他にはFlaskとかPyramidとか色々ありますので興味あったら調べてください。

DjangoはDRYの精神を主としたフレームワークらしい。

MTVモデルを採用していて、MVTというのは、MVCのような、そうじゃないようなもの。

このレベルのこと書いてるってことは初心者に近いってことなので、

ついでにMVCなんだって人向けにとても雑に説明。

MVCってただの考え方です。コーディングのアプローチです。

 

M(Model):所謂ロジック

V(View):所謂普段自分たちが見る画面用のファイル

C(Control):MとVを繋ぐためのコントローラ

このように役割分担をさせることで、良いことがあります。多分書いてたりソース読まされたりすれば、その良いことには気づきます。

例えば何も考えずに書くより圧倒的に読みやすかったり、単体テストが書きやすかったり。書いたことなきゃ全くピンと来ない話だと思うので書いたことない人はふーんで流してください。

MVTはV->T、C->Vに変えた概念だなんて言われてたりするのをよく見ます。ちょっと触った感じ、そうでもないかなって思ってたりもするけど。まぁそんなもんなのかで流していいと思います。詳しい人教えてください。

どのみち意識せずとも強制的にこのMVTモデルで書かされるので。

まとめると、(とても大雑把ですが、)DjangoはDRYでMTVって感じのフレームワークです。

この説明見て胡散臭くて、気になった人は素直に公式Documentを読みましょう。

 

ちなみに、DRYはDon't Repeat Yourselfの略です。同じことは繰り返すな。コードをという意味よりは知識をといった意味合い。余談ですが、マイクロサービスアーキテクチャとかではトレードオフで切ったりすることがあったり。

 

【環境]

  • windows7 32bit
  • python3.5.2
  • django1.10
  • mysql5.7

IDEEclipse+PyDev

 

【セットアップ編】

実は物凄い時間かかったり。プロキシサーバ探したりとか、あとは対応プラグイン探したりとか。

pip3 install hogehoge --proxy "http://proxyname:8080/"

--proxyで設定。ちなみにLinuxの方はファイルに書いたりした。

これでdjangoとかあとはSQLに繋ぐためのコネクタを入れる。

 

SQLコネクタについて

デフォルトでついているコネクタはPython3系に非対応。別途必要となる。

mysql-connector-python

Django1.10では僕の環境ではmigrate時にエラーを吐いたため、何かしら対応が取れていないかもしれない。ここについて何かしら情報持っている人いたらぜひ教えて下さい。

・mysqlclient

公式推奨になっているコネクタ。エラーも吐くことなくmigrateできた。

ただしC++コンパイラが必要。(visualstudioとかから一通り用意出来たはず)

僕の環境では、32bitだったのにpipしたら/program files(x 86)// を参照して動かなかったので、直接DL(非公式:http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient)してそれをpip installした。

 

Djangoプロジェクトのコマンド】

sqldbみたいなコマンドは廃止されている。

project_dir: $ python manage.py makemigrations

project_dir: $ python manage.py migrate

これで同じようなことができる。

creatsuperuser

runserver

等々覚えておいたほうが良いコマンドは色々あったり。

python manage.py help でコマンド一覧見れるし困ったら公式Docment読む。

とりあえず startproject してmigrateが動くか確認して、動けばとりあえずOK

みたいな形で行う

ディレクトリ構成とか、その後は気が向いたら

 

汎用ビューとか使っていない奴ならチュートリアルとかあったはずなのでやってみるといいかも。

Flask使いたい