前言
最近要把工程项目部署到服务器上。由于项目是用python3写的,所以大致学习了一下python的Flask架构,以此构建网络应用。初步体验了一下,只需要一两分钟就可以编写出简单的网站。
建议直接看官网资料学习,以下例子来源于官网
配置环境
- 配置pipvenv虚拟环境,便于迁移
- 安装Flask:
pip install Flask
简单运行
最简单的Flask应用只需要一个文件就可以了。创建web_server.py文件,注意不能用flask.py作为文件名
#导入包
from flask import Flask
#安全策略,escape函数可以过滤<,>,',",&等特殊字符
from markupsafe import escape
#将当前文件作为单一模块导入。__name__也可以换成一个包名
app = Flask(__name__)
#装饰器,当url为根时执行index()函数
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
编辑好后,临时设置环境变量并运行:
- Windows下,使用cmd时:
set FLASK_APP=web_server.py
- Windows下,使用powershell时:
$env:FLASK_APP = "web_server.py"
- Linux下:
export FLASK_APP=web_server.py
然后使用flask run
就可以开启本地的flask服务(不是执行这个py文件)。
#使用<varname>来表示动态参数传递,可以使用int:指定参数类型
#这里的 int 范围是自然数 还可以使用float指定非负浮点数
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return 'Post %d' % post_id
#字符串参数使用 string 来指定,但是可以缺省
#string是不包含 '/'的字符串
#这里的@app是根据之前的app=Flask(__name__)来确定的
@app.route('/user/<username>')
def show_user_profile(username):
# show the user profile for that user
return 'User %s' % escape(username)
# 如果字符串包含'/',那么它是一个路径串,需要用path指定
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
# show the subpath after /path/
return 'Subpath %s' % escape(subpath)
此外还有一种uuid类型。至于uuid是什么,详情见这里
#projects后面加上'/'后,访问/projects时将自动补上'/'
@app.route('/projects/')
def projects():
return 'The project page'
#如果不加'/',访问/about/会404
@app.route('/about')
def about():
return 'The about page'
flask可以对不同请求作出判断,一目了然。
如果当前使用了 GET 方法, Flask 会自动添加 HEAD 方法支持,并且同时还会 按照 HTTP RFC 来处理 HEAD 请求。同样, OPTIONS 也会自动实现。
from flask import request
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_the_login()
else:
return show_the_login_form()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。