Flask原理
Falsk是一個(gè)基于Python開發(fā)依賴jinja2模板和Werkzeug WSGI 服務(wù)的一個(gè)微型框架,對于Werkzeug本質(zhì)是Socket服務(wù)端,其用于接收http請求并對請求進(jìn)行預(yù)處理,然后觸發(fā)Flask框架施逾,開發(fā)人員基于Flask框架提供的功能對請求進(jìn)行相應(yīng)的處理托猩,并返回給用戶,如果要返回給用戶復(fù)雜的內(nèi)容時(shí)旗闽,需要借助jinja2模板來實(shí)現(xiàn)對模板的處理,即:將模板和數(shù)據(jù)進(jìn)行渲染蜜另,將渲染后的字符串返回給用戶瀏覽器适室。
微框架中的“微”意味著 Flask 旨在保持核心簡單而易于擴(kuò)展。
Flask路由設(shè)置
基本路由系統(tǒng)
1.app.route('/user/<username>')
2.app.route('/post/<int:post_id>')
3.app.route('/post/<float:post_id>')
4.app.route('/post/<path:path>')
5.app.route('/login', methods=['GET', 'POST'])
常用路由系統(tǒng)有以上五種蚕钦,所有的路由系統(tǒng)都是基于一下對應(yīng)關(guān)系來處理亭病。
Flask基本使用
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
Flask模板基本使用
html文件
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>測試模板</h1>
{{cc()|safe}}
</body>
</html>
調(diào)用html
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask,render_template
app = Flask(__name__)
def ceshi():
return '<h1>測試成功</h1>'
@app.route('/login', methods=['GET', 'POST'])
def login():
return render_template('login.html',cc=ceshi)
app.run()
Flask請求與響應(yīng)
from flask import Flask
from flask import request
from flask import render_template
from flask import redirect
from flask import make_response
app = Flask(__name__)
@app.route('/login.html', methods=['GET', "POST"])
def login():
# 請求相關(guān)信息
# request.method
# request.args
# request.form
# request.values
# request.cookies
# request.headers
# request.path
# request.full_path
# request.script_root
# request.url
# request.base_url
# request.url_root
# request.host_url
# request.host
# request.files
# obj = request.files['the_file_name']
# obj.save('/var/www/uploads/' + secure_filename(f.filename))
# 響應(yīng)相關(guān)信息
# return "字符串"
# return render_template('html模板路徑',**{})
# return redirect('/index.html')
# response = make_response(render_template('index.html'))
# response是flask.wrappers.Response類型
# response.delete_cookie('key')
# response.set_cookie('key', 'value')
# response.headers['X-Something'] = 'A value'
# return response
return "內(nèi)容"
if __name__ == '__main__':
app.run()
Flask之Session
除請求對象之外,還有一個(gè) session 對象嘶居。它允許你在不同請求間存儲特定用戶的信息罪帖。它是在 Cookies 的基礎(chǔ)上實(shí)現(xiàn)的,并且對 Cookies 進(jìn)行密鑰簽名要使用會話邮屁,你需要設(shè)置一個(gè)密鑰整袁。
設(shè)置:session['username'] = 'xxx'
刪除:session.pop('username', None)
基本使用:
from flask import Flask, session, redirect, url_for, escape, request
app = Flask(__name__)
@app.route('/')
def index():
if 'username' in session:
return 'Logged in as %s' % escape(session['username'])
return 'You are not logged in'
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
session['username'] = request.form['username']
return redirect(url_for('index'))
return '''
<form action="" method="post">
<p><input type=text name=username>
<p><input type=submit value=Login>
</form>
'''
@app.route('/logout')
def logout():
# remove the username from the session if it's there
session.pop('username', None)
return redirect(url_for('index'))
# set the secret key. keep this really secret:
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
訪問127.0.0.1/5000/login。
登錄后跳轉(zhuǎn):