辅助方法
Masonite 有几个可用的助手函数。许多助手函数在内部用于帮助编写干净的 Masonite 代码,但也可以在你的项目中使用。
Url
Url
Url 帮助器允许你创建完整路径 URL:
from masonite.helpers import url
url.url("/dashboard")
#== example.com/dashboard
URL 将来自应用程序配置文件中的 APP_URL
。
它接受一个字典来在构建 url 时添加查询字符串参数:
url.url("/search/users", query_params={"search": "John Doe" "order": "asc"})
#== http://masonite.app/users/?search=John%2Doe&order=asc
Asset
你还可以为静态资源生成 URL:
url.asset("s3.invoices", "invoice-01-2021.pdf")
Route
你还可以通过路由名称为路由生成 URL:
url.route("users.profile", {"id": 1})
#== http://masonite.app/users/1/profile/
你也可以只生成一个路径:
url.route("users.profile", {"id": 1}, absolute=False)
#== /users/1/profile/
在构建路由 url 时,它接受一个字典来添加查询字符串参数:
url.route("user.profile", {"id": 1}, query_params={"preview": 1})
#== http://masonite.app/users/1/profile/?preview=1
Compact
当你想从变量编译字典时,Compact 助手函数是一个快捷助手函数。
有时你会遇到这样的情况:
from masonite.view import View
def show(self, view: View):
users = User.all()
articles = Article.all()
return view.render('some.view', {"users": users, "articles": articles})
请注意,我们重复了 users
和 articles
键作为变量名称。 在这种情况下,我们可以使用 compact
助手函数来清理代码:
from masonite.view import View
from masonite.helpers import compact
def show(self, view: View):
users = User.all()
articles = Article.all()
return view.render('some.view', compact(users, articles))
Optional
Optional 助手函数接受一个对象并允许对该对象进行任何方法调用。如果该方法存在于对象上,它将返回值,否则将返回 None:
你可能有一段看起来像这样的代码:
if request.user() and request.user().admin == 1:
#.. do something
使用 Optional 助手函数,你可以将代码压缩成如下内容:
from masonite.helpers import optional
if optional(request.user()).admin == 1:
#.. 某段业务逻辑
Dump
你可以轻松地将变量转储到控制台进行调试,例如从控制器内部:
为此,你可以使用 Dump 门面或内置的 dump
python 方法:
from masonite.facades import Dump
test = 1
data = {"key": "value"}
Dump.dump(test, data)
# 或者
dump(test, data)
这将以一种很好的格式在控制台中转储数据以简化调试。
Dump and Die
如果你希望代码停止并呈现转储页面,则可以使用命名为 dd
的转储并终止助手函数
from masonite.facades import Dump
test = 1
data = {"key": "value"}
Dump.dd(test, data)
# 或者
dd(test, data)
这将在这一行停止代码并呈现一个漂亮的转储页面,你可以在其中看到所有转储到现在的变量。
提示:请注意,转储会累积到会话中。 如果要清除转储,可以使用
Dump.clear()
或启用 HTTP 中间件ClearDumpsBetweenRequestsMiddleware
以清除每个请求之间的转储。
Kernel.py
from masonite.middleware import ClearDumpsBetweenRequestsMiddleware
class Kernel:
http_middleware = [
#...
ClearDumpsBetweenRequestsMiddleware
]
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。