- flask是什么
- hello world
- 源码
- 运行
- HTML 转义(escaping)
- URL
- routing
- 动态URL
- 路由反向解析函数url_for()
flask是什么内容主要来源于flask官方文档
本文代码均在ubuntu环境下运行,主要集中于内容学习,安装过程不详细展开。
作为博主自己的学习记录,但是如果能帮到你我也很开心啦~
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。其内核简单但是具有高扩展性。
hello world 源码from flask import Flask
app = Flask(__name__)#创建一个Flask类实例,第一个参数是模块或者包的名称
@app.route("/")#告诉Flask激活函数的URL
def hello_world():#Flask返回的默认类型是HTML
return "Hello, World!
"
运行
方法1
$ export FLASK_APP=hello
$ flask run
hello是python文件名,第一行我们需要通过导出 FLASK_APP 环境变量来告诉终端要使用的应用程序,然后运行。
方法2
if __name__ == '__main__':
app.run(debug=True)
在python文件中添加如上函数,在shell中执行python文件
python hello.py
WARNING: This is a development server. Do not use it in a production deployment.
这会启动一个非常简单的内置服务器,它足以用于测试,但可能不是您想要在生产中使用的。有关部署选项,请参阅部署选项。
由于我是在服务器上运行的代码,所以无法直接访问127.0.0.1:5000,官方文档也给出了把服务器地址公开的解决方案,简单运行指令修改为:
$ export FLASK_APP=hello
$ flask run --host=0.0.0.0
HTML 转义(escaping)补充学习:python中__name__和__main__的含义1
模块被执行的时候,__name__等于文件名(包含了后缀.py)。如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而“main”等于当前执行文件的名称(包含了后缀.py)。所以当模块被直接执行时,name == 'main’结果为真;而当模块被import到其他模块中时,name == 'main’结果为假,就是不调用对应的方法
from markupsafe import escape
@app.route("/" )
def hello(name):
return f"Hello, {escape(name)}!"
通俗来说,就是如果我们想要在页面上打印变量name,直接*return "Hello,name"肯定是行不通的,这样页面只会打印变量名而不是变量值,因此我们需要通过escape()*对齐进行转义 *** 作,它通常被省略。
的含义会在动态URL中描述。
使用*route()*绑定函数到一个URL上。
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
动态URL
from markupsafe import escape
#当我们在浏览器输入’ip/user/<任意变量>‘ 时,页面上会打印 'User 任意变量',例子中为
@app.route('/user/' )
def show_user_profile(username):
# show the user profile for that user
return f'User {escape(username)}'
#当我们需要转换变量类型时,使用<转换类型:变量名>形式转换,例子中为
@app.route('/post/' )
def show_post(post_id):
# show the post with the given id, the id is an integer
return f'Post {post_id}'
@app.route('/path/' )
def show_subpath(subpath):
# show the subpath after /path/
return f'Subpath {escape(subpath)}'
可转换类型有
两个特别的URL/重定向行为
@app.route('/projects/')
def projects():
return 'The project page'
@app.route('/about')
def about():
return 'The about page
路由反向解析函数url_for()
url_for的主要目的是:为了按照路由列表和page参数生成一个动态的url地址。23
这一块没怎么看明白,先跳过以后再看看。
Python中__name__详解 ↩︎
url_for函数 ↩︎
url_for的使用 ↩︎
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)