千家信息网

一 flask 介绍

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,flask是一款micro web 服务器介绍轻量级服务器是指服务器剔除了一些功能,这样服务器在部署,运行时开销就会降低,变得很轻。这里的micro web 服务器是指flask为了保持core简单,
千家信息网最后更新 2025年12月03日一 flask 介绍

flask是一款micro web 服务器

介绍

轻量级服务器是指服务器剔除了一些功能,这样服务器在部署,运行时开销就会降低,变得很轻。
这里的micro web 服务器是指flask为了保持core简单,但是功能是可以扩展的。也就是说flask只提供了核心的web server 功能。
flask没有提供database abstraction layer, form validation, upload handling等其它功能,但是却提供了扩展来支持这些功能。

1 开始Hello, World!

code

from flask import Flask

app = Flask(name)
#Flask 实例实现了WSGI(Web Server Gateway Interface)接口,
name作为参数是为了查找templates, static files等等。更多的信息参考flask文档。

@app.route('/')
def hello_world():
return 'Hello, World!'
#使用route decorator使用指定的URL来触发function

run server

set FLASK_APP=01_hello.py
set FLASK_ENV=development
开启debug模式
flask run --host=0.0.0.0
指定server在所有public IPs监听

browser

http://127.0.0.1:5000/

2 Routing

使用 route() decorator 绑定a function 到 a URL.@app.route('/')
br/>@app.route('/')

return 'Hello, World!'

3 Variable Rules

位URL指定参数,可选地还可以指定类型。最后传给函数。

@app.route('/user/')
def show_user_profile(username):
return 'User %s' % (username,)

@app.route('/post/')
def show_post(post_id):
return 'post %d' % (post_id,)

案例:@app.route('/user/')
br/>@app.route('/user/')
def show_user_profile(username):
return 'User %s' % (username,)

@app.route('/post/')
def show_user_profile(post_id):
return 'post %d' % (post_id,)
报错:
AssertionError: View function mapping is overwriting an existing endpoint function: show_user_profile
原因:
两个URL绑定到一个view function, flask认为我们队view function进行了overwriting

4 Unique URLs / Redirection Behavior

@app.route('/projects/')
如果请求URL为/projects,这是会redirect到/projects/
请求会响应一个308,然后再响应一个200

note: URL 匹配规则为由上向下

案例:@app.route('/post//')
br/>@app.route('/post//')

return 'post %d' % (post_id,)

@app.route('/post/')
def show_post_profile(post_id):
return 'post profile %d' % (post_id,)

结果:
不管请求是post/2 还是post/2/,只有show_post响应。

方案: 调换两个view function的顺序。

5 URL Building

建立一个对应function的URL
用法:
第一个参数: function name
后面的key arguments对应URL variables
未知的arguments对应URL query variables

案例:
with app.test_request_context():
print(url_for('index'))
print(url_for('show_user_profile',username='test'))
print(url_for('show_user_profile',username='test',key='value'))
输出:
/
/user/test
/user/test?key=value

6 HTTP Methods

处理不同的请求,需要为route()指定methods参数

案例:@app.route('/login')
br/>@app.route('/login')

return render_template('login.html')
请求:
http://127.0.0.1:5000/login
输出:
405 Method Not Allowed
原因:
@app.route('/login') 默认只处理GET请求,不处理POST请求

7 Rendering Templates

使用render_template函数render a template
第一个参数:html template
后面的key arguments,为传递给template的变量

上下文传递:
server -> template
browser form, URL variables -> server
redirect(URL Building) --> browser

案例:
def index():
user = ''
if request.method == 'POST':
user = request.form['user']
return render_template('index.html',user=user)
else:
return render_template('index.html',user=user)


Hello from Flask
<% if user %>

Hello {{ user }}!


<% else %>

index page!


<% endif %>

8 Accessing Request Data

context locals

9 The Request Objec

通过全局变量request获取browser传递的消息
例如:
form:
request.form['username']
parameters:
searchword = request.args.get('key', '')
cooks:
headers:

功能 参数 服务器 案例 服务 处理 两个 函数 原因 变量 输出 不同 上下 上下文 也就是 也就是说 信息 全局 只有 实例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河北汉博网络技术有限公司 淮安通用软件开发售后服务 浙江统计数据库 小程序服务器信息 选课管理系统实验报告数据库 观察网络安全什么 网络安全作文的ppt课件 云霄县网络安全委员会 江苏hpe机架式服务器虚拟主机 软件开发公司怎样打开市场 天津软件开发解决方案推荐 地质灾害监测预警数据库建设规范 csg官匹连接到任意服务器失败 云服务器是不是jvm td数据库修改字段类型 国家计算机信息网络安全中心 计算机网络网络安全知识点 图书馆管理系统数据库结构 魔兽网络安全任务 思高网络技术 大学的数据库技术与应用是学什么 模态框查询数据库 从事软件开发所需的人格特质是 c 数据库名怎么查 天地通话网络技术 实惠的erp软件开发设计 有超多副本的手机版服务器 津南金蝶软件开发报价 笔记本屏幕共享到服务器 福建专业软件开发费用
0