Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

An introduction to flask

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.

Share To

Internet Technology

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report