📅  最后修改于: 2023-12-03 15:17:45.395000             🧑  作者: Mango
MyDynamica 是一个开源、轻量级的 Web 框架,它基于 Python 语言和 WSGI 协议。MyDynamica 极易学习和使用,同时具有高度可定制性和扩展性。如果你正在寻找一个快速开发 Web 应用的框架,那么 MyDynamica 可能是你的不二之选。
你可以使用 pip 安装 MyDynamica:
pip install mydynamica
下面是一个简单的 MyDynamica 应用示例,你可以将它保存为 app.py
并运行它:
from mydynamica import MyDynamica
app = MyDynamica()
@app.route('/')
def index():
return 'Hello, MyDynamica!'
if __name__ == '__main__':
app.run()
你也可以使用命令行运行示例:
$ python app.py runserver
现在访问 http://localhost:8000/ 就可以看到应用程序返回的消息。
MyDynamica 的路由系统非常简单易用。你可以使用 @app.route()
装饰器来定义 URL 路径以及对应的视图函数。视图函数返回的字符串将会作为响应发送给客户端。
MyDynamica 支持从 URL 中获取参数。你只需要在路径中使用占位符即可:
@app.route('/articles/<int:id>')
def show_article(id):
return f'Showing article {id}'
在上面的示例中,<int:id>
表示参数 id
只能是整数类型。如果你想使用其他类型的参数,可以使用如下占位符:
<int:xxx>
:整数类型。<float:xxx>
:浮点数类型。<path:xxx>
:接收除 '/' 外的所有字符(包括路径分隔符)。你可以使用 @app.route_prefix()
装饰器来为视图函数设置前缀:
@app.route_prefix('/api')
def api():
pass
@app.route('/user')
def user_api():
pass
@app.route('/post')
def post_api():
pass
在上面的示例中,/api/user
和 /api/post
是完整的路由路径。
MyDynamica 支持中间件,你可以使用 @app.middleware()
装饰器来添加中间件:
from mydynamica import Request, Response
@app.middleware()
def my_middleware(request: Request, next):
print('Before handling request')
response = next(request)
print('After handling request')
return response
@app.route('/')
def index():
return 'Hello, MyDynamica!'
在上面的示例中,我们定义了一个名为 my_middleware
的中间件函数。其参数为 request
和 next
。request
表示客户端的请求,next
表示下一个中间件或路由函数。
在中间件函数中,我们可以对请求或响应进行一些操作,然后将请求传递给下一个中间件或路由函数。中间件函数必须返回一个 Response
类型的实例。
MyDynamica 支持多种模版引擎,包括 Jinja2、Mako、Tornado 和 Django。你可以使用 @app.template()
装饰器来渲染模板:
from mydynamica import render_template
@app.route('/')
def index():
return render_template('index.html', title='MyDynamica')
# index.html
<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>Hello, MyDynamica!</h1>
</body>
</html>
在上面的示例中,我们使用了 Jinja2 模板引擎来渲染 index.html 模板文件。render_template
函数的第一个参数是模板文件的名称,其余参数为关键字参数,表示模板变量。