Flask框架基礎
阿新 • • 發佈:2018-12-04
Flask框架基礎
Flask是一個Python編寫的Web 微框架,讓我們可以使用Python語言快速實現一個網站或Web服務。
一.flask基礎緒論
1.安裝flask
pip install flask
2.匯入Flask
類
from flask import Flask
3.例項化一個Flask物件
app = Flask(__name__)
4.基本路由:通過路由繫結一個檢視函式
@app.route('/')
: 告訴Flask哪個URL才能出發對應的函式, 又稱為路由;
@app.route('/') def index(): return "<h1>hello world</h1>" @app.route('/login/') def login(): return "login"
5.執行Flask應用,可以指定ip和埠
app.run()
執行應用,可以加地址也可以不加地址
app.run('0.0.0.0', 9000)
二.路由與變數規則
常見路由的規則
1. url的一部分可以標記為變數<變數名>
2. flask中路由裡面的變數常見型別: int, string, float, path, uuid
from flask import Flask, request app = Flask(__name__) # 常見路由的規則 # 1. url的一部分可以標記為變數<變數名> # 2. flask中路由裡面的變數常見型別: # int, string, float, path, uuid @app.route('/<int:id>/comments/') def comment1(id): return "Comment id: %s" %(id) @app.route('/welcome/<string:user>/') def welcome(user): app.logger.debug('this is a debug') app.logger.warning('this is a warn') return user + "使用者, 歡迎來到westos" # 特殊的url地址: http://www.baidu.com/query?id=123&name=westos @app.route('/query') def query(): # 獲取url地址裡面key值對應的value值; id = request.args.get('id') name = request.args.get('name') return "id: %s, name: %s" %(id, name) app.run()
三.URL構建與反向URL
from flask import Flask, request, url_for app = Flask(__name__) @app.route('/welcome/<string:user>/') def welcome(user): return user + "使用者, 歡迎來到westos" @app.route('/path/') def path(): print(request.headers) # 檢視預設url地址的請求方法; # methods is a list of methods this rule should be limited # to (``GET``, ``POST`` etc.). By default a rule # just listens for ``GET`` print(request.method) # url_for: 根據函式名, 反向生成url地址 print("使用者正在訪問url地址:%s" % (url_for(endpoint="welcome", user="villa"))) return "使用者正在訪問url地址:%s" % (url_for(endpoint="welcome", user="villa")) app.run(port=6666)
四.常見http方法之post與get
1.常見HTTP請求方法
GET: 1). 獲取資訊 2). 提交的資訊會展示在url中
POST: 1). 提交資訊, 不在url裡面展示, 有利於資料的安全性
2.預設路由接受的請求方法為____get____
指定接收多個HTTP請求方法:[email protected]('/login/', methods=['GET', 'POST'])
3. 判斷使用者請求的HTTP方法:request.method
4.獲取使用者POST請求提交的表單資料: request.form['user']
5.模板渲染(jinja2)
- python中生成html不易修改與維護, 所以將html的內容獨立到templates目錄中;
- 1). 去當前專案目錄下尋找templtes是否存在?再去判斷templates目錄下是否有login.html檔案?
- 2). 讀取這個login.html檔案的內容, 作為render_template的返回值; ===>
render_template('login.html')
- 3). 最終返回給使用者瀏覽器;
6. 重定向和錯誤
return render_template('login.html', message="使用者名稱或者密碼錯誤")
7. 網路404處理
# 丟擲異常
@app.route('/user/<int:user_id>/')
def user(user_id):
if 0<int(user_id)<=100:
return "歡迎訪問: %s" %(user_id)
else:
abort(404)
以上知識點彙總:
from flask import Flask, request, render_template, redirect, url_for, abort
# redirect
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
print(request.form)
# 1. 如何獲取到使用者提交的資訊呢?
user = request.form['user']
passwd = request.form['passwd']
# 2. 判斷使用者名稱和密碼是否正確
if user == 'root' and passwd =='villa':
# 如果登陸成功, 跳轉到主頁;
return redirect(url_for('index'))
else:
# 如果登陸失敗, 重新登陸;
return render_template('login.html', message="使用者名稱或者密碼錯誤")
else:
# 使用者是GET請求, 返回登陸的html頁面
# 1. 讀取login.html檔案的內容
# 2. 將讀取的內容返回給使用者介面
return render_template('login.html')
# 404異常處理: 類似於捕獲異常
@app.errorhandler(404)
def not_found(e):
return render_template('404.html')
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20181029195453774.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTE3OTcwOQ==,size_16,color_FFFFFF,t_70)
# 丟擲異常
@app.route('/user/<int:user_id>/')
def user(user_id):
if 0<int(user_id)<=100:
return "歡迎訪問: %s" %(user_id)
else:
abort(404)
app.run(port=5002)
(登陸成功之後跳轉至首頁)