• はじめに

    1つ目のプロジェクトとしてhello worldを表示させるサイトを作ってきました。

    次に、本棚サイトを作成していきましょう。

    本棚サイトでは以下のことができることを想定しています。

    1.  本の情報をデータベースに保存できるようにする。
    2.  本の一覧ページを作り、データベースに保存されている本のタイトルが表示されるようにする。
    3.  本の詳細ページを作り、データベースに保存されている本の詳細データが表示されるようにする。

    上記のような機能をもったサイトを作っていきましょう。

    サイトの全体像を整理する

    まず、サイトの全体像を整理していきましょう。以下の図を見てください。

    BookProjectの全体像

    全体の流れは以下の通りです。

    ①ブラウザからリクエストが送られると、djangoのurls.pyがそれを受け取ります

    ②受け取ったurl.pyとリクエストを受けたurlを照合し、合致した場合はBooklibraryアプリのurls.pyに処理を渡すようにします。

    ③Booklibraryアプリは、受け取ったurlの中身に応じて呼び出すviewを指定します。

    ④呼び出されたviewは、データベースと連携するように設計されており、必要なデータをmodels.pyから取り出します。

    ⑤models.pyファイルから取り出されたデータも含めたHttpresponseをdjangoが作成し、それをブラウザに返します。

    後半のmodels.pyの部分はまだ学んでいない内容なのでイメージがわきづらいかもしれませんが、しっかりと説明していきますので安心してください。

    では、コマンドラインでプロジェクトを作っていきましょう。

    コマンドライン
    

    $ cd~

    $ mkdir project

    $ django-admin startproject book .    ← new!

    $ django manage.py startapp booklibrary

    3行目のbookプロジェクトを作成するとき、最後に.をつけていることに注目して下さい。

    .をつけることで、フォルダの階層を一つ減らすことができます。

    これもイメージで確認していきましょう。

    フォルダ構成
    

    .をつけない場合

    project

        book

            book

              manage.py

              booklibrary

    .をつけた場合

    project

        book

          manage.py

          booklibrary

    bookのフォルダの数が一つ減っていることが分かります。

    どちらの方法でも問題はありませんが、.をつけた方がきれいなフォルダ構成になると思いますので、プロジェクトを作るときは「.」をつける習慣をつけておくと良いかもしれません。

    次に、settings.pyファイルでアプリの追加とhtmlファイルを入れるフォルダの設定をしていきましょう。

    コード
    

    -BASE/book/settings.py

    ...

    INSTALLED_APPS = [

        ...

        'booklibrary',    ← new!

    ]

    TEMPLATES = [

        ...

        'DIRS': [BASE_DIR, 'templates']    ← new!

    ...

    ]

    最後に、booklibraryアプリの中でurls.pyファイルを作っていきましょう。

    コマンドライン
    

    -BASE/booklibrary

    touch urls.py

    これで初期設定は完了です。

    次の記事から、早速モデルを作っていきましょう。

    ~Django無料講義~のご案内

    Code for Djangoが、4時間超の無料Django講義をはじめました

    •  ・本を出版したCode for Djangoの
       製作者が作ったサイトです。
    •  ・Code for Djangoの内容も、
       動画で詳しく解説しています。
    •  ・動画は順次ふやしていきますので、
       ただで学び続けることが可能です。
    •  ・Djangoの効率的なスキルアップに、
       是非お役立て下さい。