標籤:python flask
首先給出Flask中文文檔地址:http://docs.jinkan.org/docs/flask/
1 web開發基礎:
前端開發:
MVC設計模式:
http:
Flask應用的基本構成:
# coding=utf-8from flask import Flask # 匯入類app = Flask(__name__) # 執行個體化Flask執行個體@app.route(‘/‘) # 應用的路由部分,為下面的視圖函數給出urldef hello_world(): return ‘Hello World!‘if __name__ == ‘__main__‘: # 運行 app.run()
路由與反向路由flaskapp.py:
# coding=utf-8from flask import Flask, request, url_for # 匯入類app = Flask(__name__) # 執行個體化Flask執行個體@app.route(‘/‘) # 應用的路由部分,為下面的視圖函數給出urldef hello_world(): return ‘Hello World!‘@app.route(‘/user/<id>‘) # , methods=[‘POST‘])def hello_user(id): return ‘Hello user!‘ + id@app.route(‘/query_user‘) # 訪問:http://127.0.0.1:5000/query_user?id=2def query_user(): id = request.args.get(‘id‘) return ‘query_user‘ + id# 反向路由@app.route(‘/query_url‘) # http://127.0.0.1:5000/query_url 顯示為:query url/query_userdef query_url(): return ‘query url‘ + url_for(‘query_user‘)if __name__ == ‘__main__‘: # 運行 app.run()
flash模板:
找到Jinja2一個Python的模板引擎: https://github.com/mitsuhiko
訪問http://jinja.pocoo.org/
flack渲染:
建立index.html檔案:
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title></head><body> <h1>{{ content }}</h1></body></html>
在flaskapp.py中添加:
@app.route(‘/‘) # 應用的路由部分,為下面的視圖函數給出urldef hello_world(): content = "Hello world" return render_template("index.html", content=content)
如果傳入的是複雜的對象:
models.py
class User(object): def __init__(self, user_id, user_name): self.user_id = user_id self.user_name = user_name
user_index.html:
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title></head><body><h1>hello {{ user.user_name }}</h1></body></html>
設定路由:
@app.route(‘/user‘)def user_index(): user = User(1, ‘thystar‘) return render_template("user_index.html", user=user)
模板中的條件陳述式:
def q_user(user_id): user = None if int(user_id) == 1: user = User(1, ‘thystar‘) return render_template("user_id.html", user=user)
user_id.html
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title></head><body>{% if user %} hello {{ user.user_name }}{% else %} no this user{% endif %}</body></html>
異常處理:
@app.errorhandler(404)def not_found(e): return render_template("404.html")
404.HTML:
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title></head><body><h1>該頁面不存在</h1></body></html>
另一種方式是:
@app.route(‘/user/<id>‘) # , methods=[‘POST‘])def hello_user(id): if int(id) == 1: return render_template("index.html") else: abort(404)
最後,提一下模板的繼承:
在有些情況下,網頁切換時,有些頁面是不發生改變的,如導覽列,因此,為了避免代碼重複,使用繼承:不變的部分在父類中實現,變化的部分在子類中實現
首先,定義基類 base.html:
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title></head><body><div> <h1>Hello World</h1></div><!--中間變化的部分定義在block中-->{% block content %}{% endblock %}<div> <h1>Thanks</h1></div></body></html>
然後定義兩個子類 ont_base.html 和 two_base.html
<!--繼承基類-->{% extends "base.html" %}{% block content %} <h2>thystar</h2>{% endblock %}
<!--繼承基類-->{% extends "base.html" %}{% block content %} <h2>THYSTAR</h2>{% endblock %}
在flaskapp.py中添加:
@app.route(‘/one‘)def one_base(): return render_template("one_base.html")@app.route(‘/two‘)def two_base(): return render_template("two_base.html")
開啟瀏覽器測試:http://127.0.0.1:5000/two
極客學院:http://www.jikexueyuan.com/course/943_3.html?ss=1
Python學習筆記(4)--- Flask開發入門