Flask学习笔记【长期更新】

前言

最近要把工程项目部署到服务器上。由于项目是用python3写的,所以大致学习了一下python的Flask架构,以此构建网络应用。初步体验了一下,只需要一两分钟就可以编写出简单的网站。

建议直接看官网资料学习,以下例子来源于官网

配置环境

  1. 配置pipvenv虚拟环境,便于迁移
  2. 安装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文件)。

在这里插入图片描述

Flask可以方便地构建动态url,并且页面内容可以据此进行响应。有点像临时创建动态网页的感觉,十分方便。

#使用<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] 举报,一经查实,本站将立刻删除。

相关推荐