In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-21 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Internet Technology >
Share
Shulou(Shulou.com)06/03 Report--
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
Hello {{ user }}!
index page!
8 Accessing Request Data
context locals
9 The Request Objec
通过全局变量request获取browser传递的消息
例如:
form:
request.form['username']
parameters:
searchword = request.args.get('key', '')
cooks:
headers:
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.