(Python素人が、)ひっそりとMasoniteして行こう、Controller編。
Masonite Documentation: Controllers
バージョン
Python 3.10.4
Masonite version 4.14.1
ファイルの場所
app/controllers
にあります。
最初はWelcomeController.py
のみ。
作成
Laravelと同様craftで作成できます。
$ python craft controller UserController
Controller Created (app/controllers/UserController.py)
app/controllers/UserController.py
from masonite.controllers import Controller
from masonite.views import View
class UserController(Controller):
def show(self, view: View):
return view.render("")
折角なら、最初からdocstringを付けておいてくれたらなぁとは思ったり。
ただ、--resource
のオプションはいけました。
素晴らしい
Responses
よくあるパターン
パラメータを受け取りデータ取って、画面と一緒に返すやつ。
request
と対象のmodel
のimportを忘れずに。
from masonite.request import Request
from app.models.User import User
def show(self, view: View, request: Request):
user = User.find(request.param("id"))
return view.render("welcome", {"user": user})
# return view.render("welcome", {
# "user": User.find(request.param("id"))
# })
JSON
json返却も可能
ModelもCollectionもキャストすれば大丈夫そう。
return {"key": "value"}
return User.find(1).to_json()
return User.where('name', 'hogehoge').get().to_json()
Redirects
nameを利用したredirectもいけます。
from masonite.response import Response
def show(self, response: Response):
return response.redirect("welcome")
return response.redirect(name="user.index")
終わりに
とりあえずは以上といった感じでしょうか。
最初はここに色々処理を書いて、次にService
導入といったLaravel雰囲気ができたらいいなと思ってま。
※さて続くのか。