Python學習筆記(4)--- Flask開發入門

來源:互聯網
上載者:User

標籤:python flask

首先給出Flask中文文檔地址:http://docs.jinkan.org/docs/flask/


1 web開發基礎:

前端開發:

  • html

  • css

  • JavaScript



MVC設計模式:

  • 視圖

  • 控制器

  • 模型


http:

  • 基於請求相應模式

  • 無狀態

  • 要求方法: GET, POST, DELETE,PUT



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開發入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.