创建一个请求情境
在shell中创建正确请求情况的最简单方法是使用test_request_Context方法。此方法将创建RequestContext。
ctx = app.test_request_context()
通常使用with语句来激活请求对象,但在shell中,可以轻松地手动使用push()和pop()方法:
发送请求之前/之后的操作
仅仅创建一个请求场景是不够的。请求尚未运行之前需要运行的代码。例如,在请求之前,您可能需要传输数据库或将用户信息存储在g对象中。 使用preprocess_Request()可以轻松模拟请求前/请求后的操作:
ctx = app.test_request_context()
ctx.push()
app.preprocess_request()
记住,preprocess_ request()函数可以返回一个响应对象。如果它返回,请忽略它。 要关闭请求,您需要在post-request函数(由process_response()触发)作用于响应对象之前关闭它。
通过dotenv设置环境变量
与其在每次打开新终端For APP时都设置FLASK,不如使用FLASK的dotenv支持功能自动设置环境变量。 如果安装了python dotenv,运行烧瓶将根据.env和中的配置设置环境变量。flaskenv公司。这可以避免在打开终端APP后手动设置FLASK,并使用环境变量配置其他类似服务。 命令行上设置的变量将重载.env中的变量,而.flaskenv flaskenv中的变量应用于公共变量,例如FLASK_APP和。env用于私有变量,不会提交到存储库。 为了找到位置文件,将从运行烧瓶的文件夹中扫描文件夹。当前工作目录将设置为文件的位置,假设这是最高级别的项目文件夹。 这些文件只能通过“flap”命令或调用run()来加载。如果要在生产运行期间加载这些文件,应手动调用load_dotenv()
自定义命令
flap命令使用Click实现。有关如何编写命令的完整信息,请参阅项目文档。 下面的示例添加了带有name参数的createuser命令。
import click
from flask import Flask
app = Flask(__name__)
@app.cli.command("create-user")
@click.argument("name")
def create_user(name):
...
名为 user create
。这样做有助于组织一组相关的命令。
import click
from flask import Flask
from flask.cli import AppGroup
app = Flask(__name__)
user_cli = AppGroup('user')
@user_cli.command('create')
@click.argument('name')
def create_user(name):
...
app.cli.add_command(user_cli)
禁用dotenv
如果检测到dotenv文件,但未安装python dotenv,则烧瓶命令将显示一条消息。 烧瓶运行 提示:存在.env文件。执行“pip install python dotenv”以使用它们。 通过设置FLASK_SKIP_DOTENV可以告诉FLASK不要加载DOTENV文件。当未安装python dotenv时,此设置也有效。此设置主要用于手动加载或使用项目运行器加载时。请记住,必须在加载项目之前设置环境变量,否则会出现问题。 导出FLASK_ SKIP_ DOTENV=1 烧瓶运行
HTML5中的新技术
HTML5增加了许多新功能,使web应用程序易于编写和使用。 <audio>和<video> 标签提供了一种嵌入音频和视频的方法,而无需使用QuickTime或Flash等复杂附件。 <article>、<header>、<nav>和<time>等语义元素使内容易于理解。 <canvas>标记支持强大的绘图API,减少了以图形方式显示数据时在服务器端生成图像的需要。 新的表单控件类型,例如<input type=“data”>,便于用户代理输入和验证数据。 高级JavaScript API,如Web存储、Web Worker、Web套接字、地理位置和脱机应用程序。 除了上述功能,HTML5还添加了许多其他功能。马克·皮尔格林(Mark Pilgrim)即将出版的《深入HTML5》(Dive Into HTML5)是一本关于HTML5新功能的优秀指南。目前,并非所有新功能都得到了浏览器的支持。无论如何,请谨慎使用。
可以获得预期结果的一些原因是大多数浏览器会容忍错误标记,还有一些原因是错误被指定为解决方案。以下结构在HTML5标准中是可选的,但浏览器必须支持:
<!doctype html>
<title>Hello HTML5</title>
<div class=header>
Hello HTML5
<p class=tagline>HTML5 is awesome
</div>
<ul class=nav>
<li><a rel="nofollow" href=/index>Index</a>
<li><a rel="nofollow" href=/downloads>Downloads</a>
<li><a rel="nofollow" href=/about>About</a>
</ul>
<div class=body>
<h2>HTML5 is probably the future</h2>
<p>
There might be some other things around but in terms of
browser vendor support, HTML5 is hard to beat.
<dl>
<dt>Key 1
<dd>Value 1
<dt>Key 2
<dd>Value 2
</dl>
</div>