您好,登錄后才能下訂單哦!
一、簡(jiǎn)介:
“微”(micro) 并不表示你需要把整個(gè) Web 應(yīng)用塞進(jìn)單個(gè) Python 文件(雖然確實(shí)可以 ),也不意味著 Flask 在功能上有所欠缺。微框架中的“微”意味著 Flask 旨在保持核心簡(jiǎn)單而易于擴(kuò)展。Flask 不會(huì)替你做出太多決策——比如使用何種數(shù)據(jù)庫(kù)。而那些 Flask 所選擇的——比如使用何種模板引擎——?jiǎng)t很容易替換。除此之外的一切都由可由你掌握。如此,F(xiàn)lask 可以與您珠聯(lián)璧合。
二、安裝
pip3 install flask
三、werkzeug簡(jiǎn)介
Werkzeug是一個(gè)WSGI工具包,他可以作為一個(gè)Web框架的底層庫(kù)。這里稍微說一下, werkzeug 不是一個(gè)web服務(wù)器,也不是一個(gè)web框架,而是一個(gè)工具包,官方的介紹說是一個(gè) WSGI 工具包,它可以作為一個(gè) Web 框架的底層庫(kù),因?yàn)樗庋b好了很多 Web 框架的東西,例如 Request,Response 等等
代碼示例:
from werkzeug.wrappers import Request, Response @Request.application def hello(request): return Response('Hello World!') if __name__ == '__main__': from werkzeug.serving import run_simple run_simple('localhost', 4000, hello)
四、flask快速使用
from flask import Flask # 實(shí)例化產(chǎn)生一個(gè)Flask對(duì)象 app=Flask(__name__) # 開啟調(diào)試模式后,修改代碼也可自動(dòng)重啟 app.debug=True # 將 '/'與視圖函數(shù)index的對(duì)應(yīng)關(guān)系添加到路由中 @app.route('/') def index(): return 'ok' if __name__ == '__main__': app.run()
main.py
from flask import Flask,render_template,request,redirect,session,url_for app = Flask(__name__) app.debug = True app.secret_key = 'sdfsdfsdfsdf' USERS = { 1:{'name':'張三','age':18,'gender':'男','text':"道路千萬(wàn)條"}, 2:{'name':'李四','age':28,'gender':'男','text':"安全第一條"}, 3:{'name':'王五','age':18,'gender':'女','text':"行車不規(guī)范"}, } @app.route('/detail/<int:nid>',methods=['GET']) def detail(nid): user = session.get('user_info') if not user: return redirect('/login') info = USERS.get(nid) return render_template('detail.html',info=info) @app.route('/index',methods=['GET']) def index(): user = session.get('user_info') if not user: # return redirect('/login') url = url_for('l1') return redirect(url) return render_template('index.html',user_dict=USERS) @app.route('/login',methods=['GET','POST'],endpoint='l1') def login(): if request.method == "GET": return render_template('login.html') else: # request.query_string user = request.form.get('user') pwd = request.form.get('pwd') if user == 'lqz' and pwd == '123': session['user_info'] = user return redirect('http://www.baidu.com') return render_template('login.html',error='用戶名或密碼錯(cuò)誤') if __name__ == '__main__': app.run()
templates/detail.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h2>詳細(xì)信息 {{info.name}}</h2> <div> {{info.text}} </div> </body> </html>
templates/index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h2>用戶列表</h2> <table> {% for k,v in user_dict.items() %} <tr> <td>{{k}}</td> <td>{{v.name}}</td> <td>{{v['name']}}</td> <td>{{v.get('name')}}</td> <td><a href="/detail/{{k}}">查看詳細(xì)</a></td> </tr> {% endfor %} </table> </body> </html>
templates/login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="post"> <p>用戶名:<input type="text" name="name"></p> <p>密碼:<input type="password" name="pwd"></p> <input type="submit" value="提交"> </form> </body> </html>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。