Edited at

Python Django入門 (1)

More than 1 year has passed since last update.

django-logo-negative.png


はじめに


なぜPythonを選ぶか

かなり独断と偏見が入っていますが、


  • シンプルな言語セット


    • 某言語のように、呪文のように短く書けることが命ではない。


      • それでいて、書くコード量は少なく、すっきりしている。



    • 某言語のように、記号を多用しない。


      • コードを書いている間Shiftキーを押しっぱなしにならない。





  • 学習コストが低い。


    • 言語セットとしての文法は、わりと平易で、直感で理解できる。

    • 難しい書き方は、後から覚えればよい。


      • 文法書を読むのは、後からでいいでしょう。まずこの講座をやってみましょう。



    • Djangoフレームワークや、各種Pythonパッケージのソースを読んでも、


      • 言語仕様を駆使した難しい書き回しは少ない。

      • メンテナーでなくても意外と読める。






なぜDjangoを選ぶか



  • Pythonで作られたフルスタック・フレームワークであるということ。


    • 必要なものはすべて揃っている。

    • テンプレートはあれを持ってきて、DBアクセスはあれを持ってきて、ということがない。

    • もちろん、拡張するモジュールはあるが、基本はDjangoだけで完結する。




  • ORM - Object Relational Mapping オブジェクト関係マッピング が優れている。


    • DBアクセスのためにSQLを1行も書かないこともできる。




  • 管理サイトが素晴らしい。


    • Djangoにはscaffoldはないが、管理サイトが秀逸(詳しくは講座の中で解説します)

    • 管理サイトだけで、データ投入、データ検証ができる。

    • 特にプロトタイプを作る局面で、生産コストが下がる。




  • 学習コストが低い


    • 生の HTML、Javascript、CSSが基本だったりするが、最初に選ぶWebフレームワークとしてはシンプル。




この講座について

この講座は、GeekLab.NAGANO 主催の「Django入門」講座用教材として書き起こしました。


講座の概略

「モバイル・ファースト」の時代ですが、スマートフォン・アプリケーションのバックエンド開発をDjangoで作れる人材を育てたいと願っています。

講座の流れは、以下のようになります。


  • Python、Djangoの開発環境構築

  • Djangoで親子関係のあるDBモデルを定義する。

  • DBモデルを管理サイトで保守する。

  • DjangoのCRUDを書いてみる。

  • Bootstrapを使う。

  • スマホバックエンドを作る。(JSONを返すAPIを作る)


学習対象者


  • JavaもしくはPHPは、やったことがあるんだけど、というPython以外の開発経験がある方を想定しています。

  • 一部、UNIX的な知識が必要になるかもしれません。その場合まわりの誰かに助けを求めて下さい。


サンプルコード

サンプルコードは、以下にあります。

講座の中ではコピペで構わないので、必要に応じて活用して下さい。

https://github.com/kakky/mybook20


使用マシン

本編はMacを前提にお話します。


  • Mac OS Xは、MacのGUIを被ったUNIXマシンです。

  • コマンドプロンプトではなく、ターミナルは本当にUNIXターミナルです。

  • 素の状態で、各種UNIXコマンドが使えます。

  • UNIXソースコードが、そのままコンパイルできるので、UNIXのツールがそのまま動き、Web開発の親和性が高い。

Web系の開発では、Macをお薦めします。

とは言え、Windowsを使っている方も多いと思うので、環境構築の部分はWindows、Macのそれぞれを説明いたします。

それでは、

のどちらかに進んで下さい。


【更新履歴 2.0】

* Django 2.0 + JQuery 3.x + Bootstrap4 で書き直しました。

* まだ Python や PyCharm のインストール時のスクショが古いままですが、お許し下さい。

【更新履歴 1.9】

* Django 1.7 -> Django 1.9

* eclipse -> PyCharm

で書き直しました。