Quickstart
Eager to get started? This page gives a good introduction to Flask. It assumes you already have Flask installed. If you do not, head over to the Installation section.
A Minimal Application
A minimal Flask application looks something like this:
from flask import Flask
app = Flask(__name__)
@app.route(#39;/#39;)
def hello_world():
return #39;Hello, World!#39;
So what did that code do?
- First we imported the Flask class. An instance of this class will be our WSGI application.
- Next we create an instance of this class. The first argument is the name of the applicationrsquo;s module or package. If you are using a single module (as in this example), you should use __name__ because depending on if itrsquo;s started as application or imported as module the name will be different (#39;__main__#39; versus the actual import name). This is needed so that Flask knows where to look for templates, static files, and so on. For more information have a look at the Flask documentation.
- We then use the route() decorator to tell Flask what URL should trigger our function.
- The function is given a name which is also used to generate URLs for that particular function, and returns the message we want to display in the userrsquo;s browser.
Just save it as hello.py or something similar. Make sure to not call your application flask.py because this would conflict with Flask itself.
To run the application you can either use the flask command or pythonrsquo;s -m switch with Flask. Before you can do that you need to tell your terminal the application to work with by exporting the FLASK_APP environment variable:
$ export FLASK_APP=hello.py
$ flask run
* Running on http://127.0.0.1:5000/
If you are on Windows, the environment variable syntax depends on command line interpreter. On Command Prompt:
C:\path\to\appgt;set FLASK_APP=hello.py
And on PowerShell:
PS C:\path\to\appgt; $env:FLASK_APP = 'hello.py'
Alternatively you can use python -m flask:
$ export FLASK_APP=hello.py
$ python -m flask run
* Running on http://127.0.0.1:5000/
This launches a very simple builtin server, which is good enough for testing but probably not what you want to use in production. For deployment options see Deployment Options.
Now head over to http://127.0.0.1:5000/, and you should see your hello world greeting.
Externally Visible Server
If you run the server you will notice that the server is only accessible from your own computer, not from any other in the network. This is the default because in debugging mode a user of the application can execute arbitrary Python code on your computer.
If you have the debugger disabled or trust the users on your network, you can make the server publicly available simply by adding--host=0.0.0.0 to the command line:
flask run --host=0.0.0.0
This tells your operating system to listen on all public IPs.
What to do if the Server does not Start
In case the python -m flask fails or flask does not exist, there are multiple reasons this might be the case. First of all you need to look at the error message.
Old Version of Flask
Versions of Flask older than 0.11 use to have different ways to start the application. In short, the flask command did not exist, and neither did python -m flask. In that case you have two options: either upgrade to newer Flask versions or have a look at the Development Server docs to see the alternative method for running a server.
Invalid Import Name
The FLASK_APP environment variable is the name of the module to import at flask run. In case that module is incorrectly named you will get an import error upon start (or if debug is enabled when you navigate to the application). It will tell you what it tried to import and why it failed.
The most common reason is a typo or because you did not actually create an app object.
Debug Mode
(Want to just log errors and stack traces? See Application Errors)
The flask script is nice to start a local development server, but you would have to restart it manually after each change to your code. That is not very nice and Flask can do better. If you enable debug support the server will reload itself on code changes, and it will also provide you with a helpful debugger if things go wrong.
To enable all development features (including debug mode) you can export the FLASK_ENV environment variable and set it to development before running the server:
$ export FLASK_ENV=development
$ flask run
(On Windows you need to use set instead of export.)
This does the following things:
- it activates the debugger
- it activates the automatic reloader
- it enables the debug mode on the Flask application.
You can also control debug mode separately from the environment by exporting FLASK_DEBUG=1.
There are more parameters that are explained in the lt;a href='http://flask.pocoo.org/docs/1.0/server
快速入门
等久了吧?本文会给你好好介绍如何上手 Flask 。 这里假定你已经安装好了 Flask ,否则请先阅读《 安装 》。
一个最小的应用
一个最小的 Flask 应用如下:
from flask import Flask
app = Flask(__name__)
@app.route(#39;/#39;)
def hello_world():
return #39;Hello, World!#39;
那么,这些代码是什么意思呢?
首先我们导入了 Flask 类。 该类的实例将会成为我们的 WSGI 应用。
接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。如果你使用 一个单一模块(就像本例),那么应当使用 __name__ ,因为名称会根据这个 模块是按应用方式使用还是作为一个模块导入而发生变化(可能是 lsquo;__main__rsquo; , 也可能是实际导入的名称)。这个参数是必需的,这样 Flask 才能知道在哪里可以 找到模板和静态文件等东西。更多内容详见 Flask 文档。
然后我们使用 route() 装饰器来告诉 Flask 触发函数的 URL 。
函数名称被用于生成相关联的 URL 。函数最后返回需要在用户浏览器中显示的信息。
把它保存为 hello.py 或其他类似名称。请不要使用 flask.py 作为应用名称,这会与 Flask 本身发生冲突。
可以使用 flask 命令或者 python 的 -m 开关来运行这个应用。在 运行应用之前,需要在终端里导出 FLASK_APP 环境变量:
$ export FLASK_APP=hello.py
$ flask run
* Running on http://127.0.0.1:5000/
如果是在 Windows 下,那么导出环境变量的语法取决于使用的是哪种命令行解释器。 在 Command Prompt 下:
C:\path\to\appgt;set FLASK_APP=hello.py
在 PowerShell 下:
PS C:\path\to\appgt; $env:FLASK_APP = 'hello.py'
还可以使用 python -m flask:
$ export FLASK_APP=hello.py
$ python -m flask run
* Running on http://127.0.0.1:5000/
这样就启动了一个非常简单的内建的服务器。这个服务器用于测试应该是足够了,但是 用于生产可能是不够的。关于部署的有关内容参见《 部署方式 》。
现在在浏览器中打开 http://127.0.0.1:5000/ ,应该 可以看到 Hello World! 字样。
外部可见的服务器
运行服务器后,会发现只有你自己的电脑可以使用服务,而网络中的其他电脑却 不行。缺省设置就是这样的,因为在调试模式下该应用的用户可以执行你电脑中 的任意 Python 代码。
如果你关闭了调试器或信任你网络中的用户,那么可以让服务器被公开访问。 只要在命令行上简单的加上 --host=0.0.0.0 即可:
flask run --host=0.0.0.0
这行代码告诉你的操作系统监听所有公开的 IP 。
如果服务器不能启动怎么办
假如运行 python -m flask 命令失败或者 flask 命令不存在, 那么可能会有多种原因导致失败。首先应该检查错误信息。
老版本的 Flask
版本低于 0.11 的 Flask ,启动应用的方式是不同的。简单的说就是 flask 和 python -m flask 命令都无法使用。在这种情况有 两个选择:一是升级 Flask 到更新的版本,二是参阅《 开发服务器 》,学习其他 启动服务器的方法。
非法导入名称
FLASK_APP 环境变量中储存的是模块的名称,运行 flask run 命令就 会导入这个模块。如果模块的名称不对,那么就会出现导入错误。出现错误的时机是在 应用开始的时候。如果调试模式打开的情况下,会在运行到应用开始的时候出现导入 错误。出错信息会告诉你尝试导入哪个模块时出错,为什么会出错。
最常见的错误是因为拼写错误而没有真正创建一个 app 对象。
调试模式
(只需要记录出错信息和追踪堆栈?参见 应用错误处理 )
虽然 flask 命令可以方便地启动一个本地开发服务器,但是每次应用代码 修改之后都需要手动重启服务器。这样不是很方便, Flask 可以做得更好。如果你打开 调试模式,那么服务器会在修改应用代码之后自动重启,并且当应用出错时还会提供一个 有用的调试器。
如果需要打开所有开发功能(包括调试模式),那么要在运行服务器之前导出 FLASK_ENV 环境变量并把其设置为 development:
$ export FLASK_ENV=development
$ flask run
(在 Windows 下需要使用 set 来代替 export 。)
这样可以实现以下功能:
激活调试器。
激活自动重载。
打开 Flask 应用的调试模式。
还可以通过导出 FLASK_DEBUG=1 来单独控制调试模式的开关。
开发服务器 文档中还有更多的参数说明。
Attention
虽然交互调试器不能在分布环境下工作(这使得它基本不可能用于生产环境),但是 它允许执行任意代码,这样会成为一个重大安全隐患。因此, 绝对不能在生产环境 中使用调试器 。
运行中的调试器截图:
更多关于调试器的信息参见 Werkzeug documentation 。
想使用其他调试器?请参阅 使用调试器 。
路由
现代 web 应用都使用有意义的 URL ,这样有助于用户记忆,网页会更得到用户的青睐, 提高回头率。
使用 route() 装饰器来把函数绑定到 URL:
@app.route(#39;/#39;)
def index():
return #39;Index Page#39;
@app.route(#39;/hello#39;)
def hello():
return #39;Hello, World#39;
但是能做的不仅仅是这些!你可以动态变化 URL 的某些部分, 还可以为一个函数指定多个规则。
变量规则
通过把 URL 的一部分标记为 lt;variable_namegt; 就可以在 URL 中添加变量。标记的 部分会作为关键字参数传递给函数。通过使用 lt;converter:variable_namegt; ,可以 选择性的加上一个转换器,为变量指定规则。请看下面的例子:
@app.route(#39;/user/lt;usernamegt;#39;)
def show_user_profile(username):
# show the user profile for that user
return #39;User %s#39; % username
@app.route(#39;/post/lt;int:post_idgt;#39;)
def show_post(post_id):
# show the post with the given id, the id is an integer
return #39;Post %d#39; % post_id
@app.route(#39;/path/lt;path:subpathgt;#39;)
def show_subpath(subpath):
# show the subpath after /path/
return #39;Subpath %s#39; % subpath
转换器类型:
string |
(缺省值) 接受任何不包含斜杠的文本 |
int |
接受正整数 |
float |
接受正浮点数 |
path |
类似 string ,但可以包含斜杠 |
uuid |
接受 UUID 字符串 |
唯一的 URL / 重定向行为
以下两条规则的不同之处在于是否使用尾部的斜杠。:
@app.route(#39;/projects/#39;)
def projects():
return #39;The project page#39;
@app.route(#39;/about#39;)
def about():
return #39;The about page#39;
projects 的 URL 是中规中举的,尾部有一个斜杠,看起来就如同一个文件夹。 访问一个没有斜杠结尾的 URL 时 Flask 会自动进行重定向,帮你在尾部加上一个斜杠。
about 的 URL 没有尾部斜杠,因此其行为表现与一个文件类似。如果访问这个 URL 时添加了尾部斜杠就会得到一个 404 错误。这样可以保持 URL 唯一,并帮助 搜索引擎避免重复索引同一页面。
URL 构建
url_for() 函数用于构建指定函数的 URL。它把函数名称作为第一个 参数。它可以接受任意个关键字参数,每个关键字参数对应 URL 中的变量。未知变量 将添加到 URL 中作为查询参数。
为什么不在把 URL 写死在模板中,而要使用反转函数 url_for() 动态构建?
反转通常比硬编码 URL 的描述性更好。
你可以只在一个地方改变 URL ,而不用到处乱找。
URL 创建会为你处理特殊字符的转义和 Unicode 数据,比较直观。
生产的路径总是绝对路径,可以避免相对路径产生副作用。
如果你的应用是放在 URL 根路径之外的地方(如在 /myapplication 中,不在 / 中),
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。