您当前的位置: 首页 >  Python

彭世瑜

暂无认证

  • 2浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python:masonite初体验TodoList

彭世瑜 发布时间:2019-11-23 17:13:58 ,浏览量:2

文档:https://docs.masoniteproject.com/

初次体验框架,感觉里边提供了丰富的命令行工具可以快速开发, 主要是ORM很棒,区别于Python生态Django等的ORM,和PHP的laravel很像,简单高效

一、环境配置

环境

Python 3.4+
masonite 2.2.26
masonite-cli 2.2.2

安装

$ pip install masonite-cli
$ craft  # 查看帮助

二、新建一个项目
# 1、新建项目
craft new project_name
cd project_name

# 2、安装依赖
craft install  

# 3、启动服务
craft serve   

访问:http://127.0.0.1:8000/ 出现欢迎界面

三、示例1:Hello World

1、创建控制器

$ craft controller Index

app/http/controllers/IndexController.py

"""A IndexController Module."""

from masonite.request import Request
from masonite.view import View
from masonite.controllers import Controller


class IndexController(Controller):
    """IndexController Controller Class."""

    def __init__(self, request: Request):
        """IndexController Initializer

        Arguments:
            request {masonite.request.Request} -- The Masonite Request class.
        """
        self.request = request

    def show(self, view: View):
        return "Hello world"
   

2、配置路由

routes/web.py

"""Web Routes."""

from masonite.routes import Get, Post

ROUTES = [
    Get('/', 'IndexController@show'),
]

masonite默认会自动重启服务 再次访问 http://127.0.0.1:8000/

显示:Hello world

示例2:新建TODOLIST项目

1、配置数据库,使用sqlite

.env

DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=data.db
DB_USERNAME=root
DB_PASSWORD=root
DB_LOG=True

2、创建迁移文件

$ craft migration create_todolist_table --create todolist

设置3个字段:id,title,complete_time databases/migrations/create_todolist_table.py

from orator.migrations import Migration


class CreateTodolistTable(Migration):

    def up(self):
        """
        Run the migrations.
        """
        with self.schema.create('todolist') as table:
            table.increments('id')
            table.string('title')
            table.datetime('complete_time').nullable()  # 可以为null
            table.timestamps()

    def down(self):
        """
        Revert the migrations.
        """
        self.schema.drop('todolist')

迁移数据, 建表

$ craft migrate

查看建表语句

CREATE TABLE "todolist" (
    "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "title" VARCHAR NOT NULL, 
    "complete_time" DATETIME NULL, 
    "created_at" DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, 
    "updated_at" DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL
);

可以看到默认多加了2个字段:created_at,updated_at

3、创建Model

$ craft model TodoList

稍作修改 app/TodoList.py

"""TodoList Model."""

from config.database import Model


class TodoList(Model):
    """TodoList Model."""
    # 查询数据库的时候会在类名后加s,所以自定义表名
    __table__ = "todolist"

    # 要写入的字段
    __fillable__ = ['title', 'complete_time']

4、创建模板

$ craft view index
$ craft view detail

其中模板引擎使用的是 Jinja2

resources/templates/index.html


TODO LIST

添加
清空


    
    
        序号
        任务
        完成时间
        编辑
        删除
    
    

    
    {% for row in rows %}
        
            {{ row.id }} 
            {{ row.title }} 
            {% if row.complete_time %}
                {{ row.complete_time }}
            {% else %}
                
                            
关注
打赏
1665367115
查看更多评论
0.0503s