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?

More than 3 years have passed since last update.

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

Posted at

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の作り込みをしてみましょう。

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?