Craft 命令介绍
介绍
Craft 命令是功能非常强大的开发工具,可让您快速构建项目中的模型、控制器、视图、命令、服务提供程序等,这将几乎所有内容压缩为最简单的 craft 操作。在创建模板代码时,大幅度减少您重复性工作。 Masonite 将所有常见的开发任务压缩到一个命名空间中。
例如,在Django中,您可能需要执行以下操作:
$ django-admin startproject
$ python manage.py runserver
$ python manage.py migrate
Craft 将所有常用命令浓缩到自己的命名空间中。
$ craft new
$ craft serve
$ craft migrate
Masonite 的所有脚手架都可以手动完成(例如,手动创建一个控制器并导入 view
函数),但是 craft 命令工具可用于加快开发速度并减少重复开发工作。
命令
当在 masonite 目录之外使用 Craft 时,它将仅显示极少几个基本命令,例如 new
和 install
命令。其他命令(例如用于创建控制器或模型的命令)是从 Masonite 项目本身加载的。
当在 Masonite 项目目录中运行 Craft 时,许多命令会加载到框架本身中并获取。这样,可以在后续版本上有效的处理特定于某个版本的命令,也可以加载第三方命令去扩展 craft 本身。
可用命令包含以下:
Tinker 命令
您可以通过运行以下命令对 Masonite 进行调试:
$ craft tinker
此命令将启动Python Shell,默认情况下也会导入容器。因此,我们可以这样调用:
Type `exit()` to exit.
>>> app
<masonite.app.App object at 0x10cfb8d30>
>>> app.make('Request')
<masonite.request.Request object at 0x10d03c8d0>
>>> app.collect("Mail*Driver")
{'MailSmtpDriver': <class 'masonite.drivers.MailSmtpDriver.MailSmtpDriver'>,
'MailMailgunDriver': <class 'masonite.drivers.MailMailgunDriver.MailMailgunDriver'>
}
>>> exit()
并在容器内部使用。在出现任何问题时验证是否将对象加载到了容器中,这将是一个非常有用的调试工具。
展示路由命令
另一个有用的命令是 show:routes 命令,该命令将显示可被访问的路由表:
$ craft show:routes
这将显示如下一个路由表:
======== ======= ======= ======== ============
Method Path Name Domain Middleware
======== ======= ======= ======== ============
GET / welcome
GET /home home
GET /user
POST /create user
======== ======= ======= ======== ============
应用信息
如果您尝试调试应用程序或在 Slack 通道中需要帮助,它将对你查看系统和环境信息的时候有所帮助。在这种情况下,我们有一个简单的命令:
$ craft info
这个命令提供了当前系统的一些细节对你非常有用。运行这个命令将会提供一下信息:
Environment Information
------------------------- ------------------
System Information MacOS x86_64 64bit
System Memory 8 GB
Python Version CPython 3.6.5
Virtual Environment ✓
Masonite Version 2.0.6
Craft Version 2.0.7
APP_ENV local
APP_DEBUG True
在核心仓库中随时为您提供您任务有必要的其他信息。
创建身份验证系统
创建一个带有登录,注册和仪表盘系统的身份验证系统,只需要运行:
$ craft auth
该命令将创建几个新的模板,控制器和路由,因此您不需要从头开始创建身份验证系统,尽管您可以。如果您需要自定义身份验证系统,此命令将为您提供脚手架,以便您可以进入这些新的控制器并修改成您想要的。
这些新的控制器并不是框架本身的一部分,而是您项目的一部分。不要将编辑这些控制器视为编辑框架源代码。
创建验证器
验证器是基于验证表单或请求输入的类。我们可以通过运行以下命令来创建验证器:
$ craft validator LoginValidator
请务必阅读 表单验证 文档,以了解有关表单验证的更多信息。
创建模型定义文档字符串
Masonite 使用 Orator,这是一种活动记录 ORM。如果您使用过其他 Python 框架,则您可能更熟悉 Data Mapper ORM,例如 Django ORM 或 SQLAlchemy 。这些 ORM 很友好,因为表中列的名称通常是类属性的名称。如果忘记了列的名称,通常可以查看模型来找到,但是如果模型看起来像:
class User(Model):
pass
那么表结构并不明显。我们可以运行一个简单的命令来生成一个文档字符串,然后将其放入模型中:
$ craft model:docstring table_name
它将在终端中生成如下内容:
"""Model Definition (generated with love by Masonite)
id: integer default: None
name: string(255) default: None
email: string(255) default: None
password: string(255) default: None
remember_token: string(255) default: None
created_at: datetime(6) default: CURRENT_TIMESTAMP(6)
updated_at: datetime(6) default: CURRENT_TIMESTAMP(6)
customer_id: string(255) default: None
plan_id: string(255) default: None
is_active: integer default: None
verified_at: datetime default: None
"""
现在,我们可以将其复制并粘贴到您的模型中,并进行以下更改:
class User(Model):
"""Model Definition (generated with love by Masonite)
id: integer default: None
name: string(255) default: None
email: string(255) default: None
password: string(255) default: None
remember_token: string(255) default: None
created_at: datetime(6) default: CURRENT_TIMESTAMP(6)
updated_at: datetime(6) default: CURRENT_TIMESTAMP(6)
customer_id: string(255) default: None
plan_id: string(255) default: None
is_active: integer default: None
verified_at: datetime default: None
"""
pass
您还可以使用 -connection
选项指定要使用的连接。
$ craft model:docstring table_name --connection amazon_db
创建控制器
如果您希望创建控制器,请运行:
$ craft controller Dashboard
此命令将创建 app/http/controllers/DashboardController.py
控制器。按照惯例,所有控制器都应附加一个 「Controller」,因此 Masonite 会将「控制器」 附加到创建的控制器上。
您可以通过运行以下命令来创建不带 「Controller」 的控制器:
$ craft controller Dashboard -e
这将创建一个 app/http/controllers/Dashboard.py
控制器。注意,文件名未带 「Controller」。
-e
是--exact
的缩写。 两者都可以。
您还可以创建资源控制器,其中包括标准操作,例如显示,创建,更新等:
$ craft controller Dashboard -r
-r
是--resource
的缩写。两者都可以。
您可以将它们结合起来:
$ craft controller Dashboard -r -e
创建一个新项目
如果您想开始一个新项目,可以运行:
$ craft new project_name
这将下载 MasoniteFramework/masonite
库的 zip 文件,并将其解压缩到当前工作目录中。该命令将默认为最新版本的仓库。
您也可以指定一些选项。-version
选项将根据 MasoniteFramework/masonite
存储库中的发行版创建一个新项目。
$ craft new project_name --version 1.3.0
或者,您可以使用以下命令指定要创建新项目使用的分支:
$ craft new project_name --branch develop
创建新项目后,将具有一个包含所有项目依赖项的 requirements.txt
文件。除此文件外,还有一个 .env-example
文件,它是 .env
文件的样板。安装依赖项,将示例环境文件复制到 .env
文件,运行:
$ craft install
craft install
命令也将同时运行 craft key --store
,它会生成一个密钥并将其放置在.env
文件中。
创建迁移
所有框架都有一种创建迁移操作数据库表的方式。与其他 Python 框架相比,Masonite 使用的迁移方法略有不同,开发人员可以编辑迁移文件。这是对已存在的表进行迁移的命令:
$ craft migration name_of_migration --table users
如果要为尚不存在的表创建迁移(迁移将创建该表),则可以传递 -create
标志,如下所示:
$ craft migration name_of_migration --create users
这两个标志将创建稍微不同的迁移类型。
迁移
创建、编辑并准备好迁移文件之后,我们现在可以将其迁移到数据库中。要迁移所有未迁移的迁移,只需运行:
$ craft migrate
回滚并重建迁移
您还可以刷新和回滚所有迁移,然后重新迁移。
这实际上将重建整个数据库。
$ craft migrate:refresh
您也可以回滚所有迁移:
$ craft migrate:reset
最后,您可以仅回滚您尝试迁移的最后一组迁移
$ craft migrate:rollback
模型
如果要创建模型,可以运行:
$ craft model ModelName
这将在 app/ModelName
文件搭建模型并导入所需的所有内容。
您也可以在 app
文件夹指定特定的目录来创建模型:
$ craft model Models/ModelName
这将会创建一个路径为 app/Models/ModelName.py
的模型文件。
模型快捷操作
您还可以使用 -s 和 -m 同时创建种子或模型。
$ craft model ModelName -s -m
这是一下 3 个命令的快捷方式:
$ craft model ModelName
$ craft seed ModelName
$ craft migration create_tablename_table --create tablename
###创建服务提供者
服务提供者是 Masonite 真正强大的功能。如果您想创建自己的服务提供者,请运行:
$ craft provider DashboardProvider
这将创建一个 app/providers/DashboardProvider.py
服务提供者。
阅读更多 服务提供者 文档。
创建视图
视图是位于 resources/templates
中的html文件,可以通过运行以下命令轻松创建:
$ craft view blog
这个命令将会创建一个视图文件,路径为 resources/templates/blogView.html
您还可以在 resources / templates
目录下更深层次目录创建视图。
$ craft view auth/home
这将在 resources/templates/auth/homeView.html
下创建一个视图,但请记住,它不会为您创建目录。如果 auth
目录不存在,此命令将失败。
特别提醒: Masonite Version=2.3.7 版本,如果目录不存在会自动创建目录。
创建任务
任务被设计为加载到队列中。我们可以将耗时的任务封装成任务。然后,我们可以将此Job推送到队列中,以提升应用程序的性能,防止瓶颈和速度下降。
$ craft job SendWelcomeEmail
任务将放置在 app/jobs
目录中。有关更多信息,请参见 队列和任务 文档。
运行队列
Masonite 具有队列功能,可让您加载在上一节中创建的任务,然后异步运行它们,或将其发送给 RabbitMQ 等消息代理。您可以通过运行以下命令启动工作程序:
$ craft queue:work
您可以通过学习 队列任务 来了解更多.
包
您可以使用添加特定于 Masonite 的 integrations.py
文件来创建 PyPi 软件包。阅读 创建扩展包 文档来学习吧。要创建程序包样板,只需运行:
$ craft package name_of_package
创建命令
您可以搭建基本的命令样板文件:
$ craft command Hello
这将创建一个 HelloCommand.py
文件,路径为 app/commands/HelloCommand.py
。
运行 WSGI 服务器
您只需运行以下命令即可运行 WSGI 服务器:
$ craft serve
这样文件更改时,服务器自动重新加载。
您还可以将其设置为在文件更改时不自动重新加载:
$ craft serve --dont-reload
或
$ craft serve -d
如果您有未完成迁移的数据,Masonite 在启动服务时将提示运行
craft migration
。
实时重载
serve 命令还具有实时重载选项,该选项将刷新所有连接的浏览器,以便您可以更快地构建 jinja 模板的原型。
这不是写 Python 代码的好工具,有些 Python 代码更改仍可能需要刷新浏览器才能看到效果。
$ craft serve --live-reload
主机和端口
您可以使用 -b
绑定主机和使用 -p
绑定端口号。
$ craft serve -b 127.0.0.1 -p 8080
重载间隔
Masonite 附带了一个非常快速的自动重新加载开发服务器。默认情况下,文件更改检测与服务器重新加载之间会有1秒的延迟。这是一个很慢的重载间隔,大多数系统可以处理更快的间隔,同时仍然可以正确地管理进程PID的启动和终止。
您可以使用 -i
选项将间隔更改为小于1的值:
$ craft serve -r -i .1
您会发现计算机上的重新加载时间大大加快。如果您的计算机可以处理此间隔速度(这意味着您的计算机已正确启动并终止进程),则可以在开发过程中使用较小的间隔来安全地进行。
加密
Masonite 带有一种加密数据的方式,默认情况下,它会加密框架设置的所有 cookie。 Masonite使用 key
加密和解密数据。阅读 安全加密 文档以获取有关加密的更多信息。
生成一个密钥:
$ craft key
这将生成一个32位字符串,您可以将其粘贴到 .env
文件中的 KEY
值。
您还可以传递 -store
标志,该标志将自动将密钥添加到您的 .env
文件中:
$ craft key --store
每当您运行 craft install
时,都会运行此命令。
非常好!您现在已经是 Craft 命令行工具的高手。
测试
您也可以搭建基本的测试用例。您可以通过运行以下命令进行操作:
$ craft test NameOfTest
这将在 tests/
目录中构建测试文件,您可以从那里将其移动到任意位置。
发布
Masonite 具有发布的概念,您可以将指定资源发布到开发人员的应用程序。他们可以进行微调,以更好地满足需求。
您可以通过运行以下命令发布特定的提供者程序:
$ craft provider ProviderName
您还可以选择指定标记:
Masonite Version=2.3.7 Craft Version =2.3.7 环境下,执行下边命令会报 The “–tag” option does not exist. 的错误。
$ craft provider ProviderName --tag name
您可以阅读更多有关发布的文档。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。