0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

MitamaでTodoアプリを作ってみる(1) - Mitamaアプリの構成

Mitama Advent Calendar2日目です。

木瓜丸です。今回から何回かに分けてMitamaでゴミアプリの代名詞Todoアプリを組んでみましょう!

この記事では、アプリの動かし方や基本的なアプリの構成について書きます。

アプリディレクトリの作成

アプリを動かす時は、

  1. Pythonのモジュール検索パス(site-packagesとかのパス)にパッケージをインストール方法
  2. プロジェクトのディレクトリの直下にパッケージを設置する方法

の2つがあります。
(「プロジェクト」ってなんや?って方は、こちら→『Mitama + nginx + uWSGIで社内システムを立てる』)

今回は2のプロジェクトディレクトリの直下にアプリディレクトリを置く方法で動かしましょう。プロジェクトディレクトリで次のコマンドを叩いてください。

$ mitama mkapp todo

そうするとディレクトリができたかと思います。

ディレクトリ構成

一度ディレクトリの構成を見てみましょう。

todo
├── __init__.py
├── controller.py
├── main.py
├── model.py
├── static
│   └── vertical-logo.svg
└── templates
    └── welcome.html

開発経験がある方ならおわかりかもしれませんが、Mitamaが木瓜丸なりにしっかり目にMVCアーキテクチャに従っています。

main.py

from mitama.app import App, Router
from mitama.utils.controllers import static_files
from mitama.app.method import view

from .controller import WelcomeController


class App(App):
    # name = 'MyApp'
    # description = 'This is my App.'
    router = Router(
        [
            view("/", WelcomeController),
            view("/static/<path:path>", static_files()),
        ]
    )

main.pyにはアプリの設定やルーティングの設定などの処理を記述します。

controller.py

from mitama.app import Controller
from mitama.app.http import Response


class WelcomeController(Controller):
    def handle(self, request):
        template = self.view.get_template("welcome.html")
        return Response.render(template)

controller.pyにはリクエストの情報を受けとり、モデルやビューを呼び出してレスポンスを作成して返す処理を記述します。基本的にはControllerクラスを継承したものを作成します。

model.py

from mitama.db import BaseDatabase
# from mitama.db.types import *


class Database(BaseDatabase):
    pass


db = Database()

# db.create_all()

model.pyにはデータベースに関わるオブジェクトを定義します。この状態では何もおこりません。

その他

templates/にはControllerから使用するJinja2テンプレートを入れます。
static/は、デフォルトでは静的ファイルの読み込み先になっています。特に変更をしなければ、この中に入れたファイルがlocalhost/static/<static下のパス>のようなURLでアクセスできるようになります。

動かしてみる

では、プロジェクトでアプリを動かしてみましょう。

まずは、mitama.jsonを編集し、アプリを登録します。

{
    "apps":{
        "mitama.portal": {
            "path": "/"
        },
        "todo": {
            "path": "/todo"
        }
    }
}

今回はプロジェクト直下にアプリを配置しているので、そのアプリのパッケージ名(フォルダ名)をキーに、pathには好きなパスを書き込んでおきましょう。

できたら、プロジェクトディレクトリで次のコマンドを叩き、テスト用のサーバーを立ち上げましょう。

$ mitama run

叩いたら、http://localhost:8080/todo にアクセスすれば、アプリが開けます。ウェルカム画面が出れば成功です。

2020-12-01-045907_1920x1080_scrot.png


長くなってしまったので、今回はここまでにします。

次回はModelの作り込みをしてみましょう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?