0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Djangoの構成についての覚え書き

Djangoを学び始めてはや一週間。テキストが一冊終了しました。
テキストのコードを模写しながら思ったことを記しておきます。
(記述した部分を中心に扱います。)

Djangoの拡張性について

Laravel(PHP)とかFlask(Python)でWEBアプリを作ったことがあるが、最初からこんなに機能がついているとは...
しかも開発用のWEBサーバも用意してくれて用意周到すぎる

アーキテクチャについて

LaravelではMVCモデルが採用されており、それとほぼ同じMTVモデルを採用。

  • MVC:Model, View, Controller
  • MTV: Model, Template, View
    実は、それぞれのViewは同じ働きをしない(紛らわしい)
    ※MTVモデルのViewは、MVCモデルで言うところのControllerに該当する。

Modelの役割

DBとのやり取りを行う。ModelファイルにDBの定義について記述しておき、マイグレーションでDBの定義を行うこともできる。

マイグレーションって何? DBにテーブルを作成・削除する際、本来はDBにDB管理システム(PostgreSQLとか)で入って処理を行う必要がある。だが、マイグレーションを使う場合、Modelファイルにオブジェクトとしてテーブルを定義し、マイグレーションコマンドを実行することでDBにModelファイルの内容が反映される。 本来はDBのバージョンアップ&ダウンをすることができる点が良い所らしい。(私はまだしたことない)

マイグレーションの流れ

1. Modelファイルにテーブルオブジェクトを記述

python manage.py makemigration [Modelファイルの親ディレクトリ]

これでマイグレーションファイルが作られる。

2. マイグレーションを実行

python manage.py migrate

マイグレーションファイルの内容を確認してから実行するようにしましょう。
これでModelファイルのオブジェクトがテーブルとして作られる。

レコードをオブジェクトとして扱うことができる

レコードってなんや? レコード:テーブル内の1つのデータ(インスタンスとか言われる)
マイグレーションでも言及したが、テーブルをオブジェクトとしてとらえることができる。 例えばこんな感じ
models.py
from django.db import models 
class [テーブル名単数形]
    name = models.CharField()
    [属性名] = models.[フィールド名]

こうすると、models.pyさえimportすればViewでもDB内のデータを扱える!

Templateの役割

ここはUI(ユーザインタフェース)に関係しています。
Djangoの場合(フロントでフレームワークを使用しない場合)は以下のディレクトリ構成になりそう

templates
    - hello
        - index.html
        - show.html
        - ...

index.htmlなどのテンプレートファイルはDjangoのサーバから呼び出されるため、プロジェクト名と同じディレクトリを親ディレクトリとして、その配下にテンプレートファイルを配置する。

フロントエンドをフレームワークで開発する場合
Djangoプロジェクトにはテンプレートファイルを置かず、フロンドエンドのファイルを参照するように設定を変更する。

Viewの役割

簡単に言うと、

なんかリクエスト来る

(リクエスト内容をもとにDB操作)

Templateに返す

例えばこんな感じ

views.py
def index(request):
    params = {
        'title': 'Hello',
        'message': '',
    }
    return render(request, 'hello/index.html', params)

ここまでできたらどうする

テキストを見ながら、簡単なオリジナルアプリを作ってみようかと思います。
あまり作りこまず、CRUD操作ができる程度の簡単なアプリです。

最後に

一週間、テキストを模写してみて、テンプレートファイルを書くのが面倒くさい!ってなりました。
あと、コードを書くだけだとデザインが壊滅的に...。
オリジナルアプリを開発するときは、デザインツールを使ってみようかなと思いました。

初心者の方へ

凄いアプリを作りたい!と思って、いきなり本格的なアプリを作り始めてしまいがちです。(私もそうでした)
ですが、そうも簡単にいかないです。段階を踏んで辛抱強く頑張りましょう。
私もまだ初心者ですので、しっかり段階を踏んで、本格的なアプリの開発に着手したいと思います。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?