控制器中新增方法
masapp/app/http/controllers/PostController.py
:
def update(self, view: View, request: Request):
post = Post.find(request.param('id'))
return view.render('update', {'post': post})
def store(self, request: Request):
post = Post.find(request.param('id'))
post.title = request.input('title')
post.body = request.input('body')
post.save()
return 'post updated'
新建檢視模版
(env) $ craft view update
masapp/resources/templates/update.html
:
<form action="/post/{{ post.id }}/update" method="POST">
{{ csrf_field }}
<label for="">Title</label>
<input type="text" name="title" value="{{ post.title }}"><br>
<label>Body</label>
<textarea name="body">{{ post.body }}</textarea><br>
<input type="submit" value="Update">
</form>
新增路由
masapp/routes/web.py
Get('/post/@id/update', 'PostController@update'),
Post('/post/@id/update', 'PostController@store'),
完成了「控制器方法、檢視、路由」這三樣的編寫之後,可以進入 localhost:8000/post/1/update 裡面重新輸入一些文字進去,再在資料庫中的 posts 資料表中重新整理檢視,可以看到之前的文章儲存內容被改變了。
刪除方法
masapp/app/http/controllers/PostController.py
:
from masonite.request import Request
...
def delete(self, request: Request):
post = Post.find(request.param('id'))
post.delete()
return 'post deleted'
masapp/routes/web.py
:
Get('/post/@id/delete', 'PostController@delete'),
在這裡使用了 GET 路由,使用 POST 方法會更好,但是為簡單起見,先用 GET 吧。
masapp/resources/templates/update.html
模版中增加一個刪除連結 <a href="/post/{{ post.id }}/delete"> Delete </a>
:
<form action="/post/{{ post.id }}/update" method="POST">
{{ csrf_field }}
<label for="">Title</label>
<input type="text" name="title" value="{{ post.title }}"><br>
<label>Body</label>
<textarea name="body">{{ post.body }}</textarea><br>
<input type="submit" value="Update">
<a href="/post/{{ post.id }}/delete"> Delete </a>
</form>
現在可以去 localhost:8000/post/1/update 刪除文章了,找到剛才新增的連結並點選,這相當於訪問了刪除文章的頁面:localhost:8000/post/1/delete 可以在資料庫中重新整理 posts 資料表,會發現 id=1 的文章消失了。
本作品採用《CC 協議》,轉載必須註明作者和本文連結