成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Web 開發(fā)學(xué)習(xí)筆記(5) --- 抽象出 Page 類

syoya / 463人閱讀

摘要:回顧通過前幾篇文章的內(nèi)容我們已經(jīng)搭建了基于框架的一個(gè)簡單的應(yīng)用的代碼如下抽象出類由于我們在以后的每個(gè)頁面的中都要用到以及其他一些共用的特性我們將其提取出來抽象成一個(gè)類修改如下提取其他共用特性一般出現(xiàn)在請求中比如搜索時(shí)地址欄出現(xiàn)的

回顧

通過前幾篇文章的內(nèi)容, 我們已經(jīng)搭建了基于 Flask 框架的一個(gè)簡單的 Web 應(yīng)用, server.py 的代碼如下


from flask import Flask, make_response
from flask.views import MethodView
app = Flask(__name__)

class IndexHandler(MethodView):
    def get(self):
        resp = make_response("It is a GET request")
        resp.headers["Strict-Transport-Security"] = "max-age=15768000; includeSubDomains; preload"
        return resp

if __name__ == "__main__":
    app.add_url_rule("/", view_func=IndexHandler.as_view("index"))
    context = ("./server.cer", "./server.key")
    app.run(port=443, host="0.0.0.0", debug=True, threaded=True, ssl_context=context)

抽象出 Page

由于我們在以后的每個(gè)頁面的 Handler 中都要用到 HSTS, 以及其他一些共用的特性, 我們將其提取出來, 抽象成一個(gè) Page 類, 修改 server.py 如下


from flask import Flask, make_response
from flask.views import MethodView
app = Flask(__name__)

class Page(MethodView):
    def render(self, content):
        resp = make_response(content)
        resp.headers["Strict-Transport-Security"] = "max-age=15768000; includeSubDomains; preload"
        return resp

class IndexHandler(Page):
    def get(self):
        content = "It is a GET request"
        return self.render(content)

if __name__ == "__main__":
    app.add_url_rule("/", view_func=IndexHandler.as_view("index"))
    context = ("./server.cer", "./server.key")
    app.run(port=443, host="0.0.0.0", debug=True, threaded=True, ssl_context=context)

提取其他共用特性

get_args()


args 一般出現(xiàn)在 GET 請求中, 比如 Google 搜索時(shí)地址欄出現(xiàn)的 https://www.google.com/search?q=awesome, 其中 ? 后面的內(nèi)容就是 args, 以 key-value 的形式出現(xiàn). 對應(yīng)剛才的例子, key 就是 q, value 就是 awesome. 如果有多組 key-value, 中間就用 & 連接, 如 ?q=awesome&type=server. 這種形式很容易讓我們聯(lián)想到 Python 的字典結(jié)構(gòu) dict. 根據(jù) 文檔, Flask 是通過 ImmutableMultiDict 來存儲 args 的. 我們可以在 Page 類中增加 get_args() 方法

from flask import request
class Page(MethodView):
    def get_args(self, key):
        return request.args.get(key)

這樣, 我們就可以通過調(diào)用 get_args() 來獲取用戶請求中的參數(shù)了, 舉個(gè)栗子


class AwesomeHandler(Page):
    def get(self):
        if self.get_args("q") == "awesome":
            # do something
            return "This is an awesome page!"

同樣地, 我們可以在 Page 類中增加其他特性, 如 get_date(), get_referer(), get_cookies() 等等, 編寫好的 Page 類如下


from flask import Flask, make_response, request
from datetime import datetime, date

class Page(MethodView):
    def render(self, content):
        resp = make_response(content)
        resp.headers["Strict-Transport-Security"] = "max-age=15768000; includeSubDomains; preload"
        return resp

    def get_args(self, key):
        return request.args.get(key)

    def get_date(self, year=0, month=0, day=0):
        if year and month and day:
            return date(year, month, day)
        else:
            return date.today()

    def get_referer(self):
        return request.headers.get("referer")

    def get_cookies(self):
        return request.cookies

參考資料

http://flask.pocoo.org/docs/1...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43195.html

相關(guān)文章

  • CSS學(xué)習(xí)筆記(十六) CSS最佳實(shí)踐之可維護(hù)性篇

    摘要:國內(nèi)各大公司都已經(jīng)投入使用,在一些常見的網(wǎng)站,如淘寶騰訊小米等移動站點(diǎn),隨處可見其蹤影。變革之騰訊手機(jī)淘寶的設(shè)計(jì)與實(shí)現(xiàn)前端亂燉適配總結(jié)樣式重置上文已提及,這里推薦閱讀同學(xué)寫的專題文章。 前言 CSS代碼難維護(hù)眾所皆知。 為一個(gè)元素設(shè)置樣式的方式可以通過定義的class、定義的id、元素的標(biāo)簽名、元素的屬性等選擇器以及這些選擇器的組合來實(shí)現(xiàn); 作用于某個(gè)元素上的樣式又可能來自單個(gè)樣式規(guī)...

    newtrek 評論0 收藏0
  • CSS學(xué)習(xí)筆記(十六) CSS最佳實(shí)踐之可維護(hù)性篇

    摘要:國內(nèi)各大公司都已經(jīng)投入使用,在一些常見的網(wǎng)站,如淘寶騰訊小米等移動站點(diǎn),隨處可見其蹤影。變革之騰訊手機(jī)淘寶的設(shè)計(jì)與實(shí)現(xiàn)前端亂燉適配總結(jié)樣式重置上文已提及,這里推薦閱讀同學(xué)寫的專題文章。 前言 CSS代碼難維護(hù)眾所皆知。 為一個(gè)元素設(shè)置樣式的方式可以通過定義的class、定義的id、元素的標(biāo)簽名、元素的屬性等選擇器以及這些選擇器的組合來實(shí)現(xiàn); 作用于某個(gè)元素上的樣式又可能來自單個(gè)樣式規(guī)...

    keke 評論0 收藏0

發(fā)表評論

0條評論

syoya

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<