【讓AI女友跟我表白】大白話說Python+Flask入門(四)Flask Sijax的使用

2023-12-01 06:00:35

寫在前面

先吐槽兩句,搞個mysql安裝設定弄了4個小時,怎麼都是外網無法存取,我靠,我特麼也是服了。

當然,後來我投降了,明天再說,學什麼不是學,孃的,換個方向,狀態依然在!

Sijax是什麼?

代表 Simple Ajax ,它是一個 Python / jQuery 庫,使用 jQuery.ajax 來進行AJAX請求用的。

安裝依賴

pip install flask-sijax

Sijax的使用

模板頁面result.html,範例程式碼如下:

<html>
<head>
{#  呼叫百度的jQuery加速  #}
<script type="text/javascript" src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
{#  安裝Flask-sijax時預設安裝的sijax.js #}
<script type="text/javascript" src="/static/js/sijax/sijax.js"></script>
{#  使用過濾器safe禁止轉譯sijax_get_js() #}
<script type="text/javascript"> {{ g.sijax.get_js()|safe }} </script>
</head>
<body>
{# 建立id為my_form的表單 #}
<form id="my_form">
    <p><input type="text" name="username" value="小強" /></p>
    <p><input type="password" name="password" value="123445" /></p>
</form>
{# 使用Sijax.getFormValues方法獲取id為my_form的表單資料 #}
<script type="text/javascript">
    var values = Sijax.getFormValues('#my_form');
</script>
{# 使用帶引數Sijax.request()方法傳遞values值 #}
<a href="javascript://" onclick="Sijax.request('queryUserInfo',values);">點選</a>
</body>
</html>

邏輯程式碼部分如下:

import os

import flask_sijax
from flask import Flask, g, render_template

# 這玩意真的不用自己建立,服務啟動後,手動存取路徑會自動生成
path = os.path.join('.', os.path.dirname(__file__), 'static/js/sijax/')
app = Flask(__name__)

app.config['SIJAX_STATIC_PATH'] = path
app.config['SIJAX_JSON_URI'] = '/static/js/sijax/json2.js'
flask_sijax.Sijax(app)


@app.route('/')
def index():
    return '這是首頁的Index'


@flask_sijax.route(app, '/getUserInfo')
def sendRequest():
    def queryUserInfo(response): 
        response.alert('呼叫Sija執行查詢操作!')

    if g.sijax.is_sijax_request: 
        g.sijax.register_callback('queryUserInfo', queryUserInfo)
        return g.sijax.process_request()  
    return render_template('result.html')  


if __name__ == '__main__':
    app.run(debug=True)

知識點:

  • app.config['SIJAX_STATIC_PATH']: 要被映象的Sijax javascript檔案的靜態路徑。預設位置是static/js/sijax。在此資料夾中,保留sijax.jsjson2.js檔案。
  • app.config['SIJAX_JSON_URI']:從中載入json2.js靜態檔案的URI
  • 使用@flask_sijax.route輔助裝飾器來處理Sijax請求
  • g.sijax.is_sijax_request: 判斷是否請求為sijax請求
  • g.sijax.register_callback():註冊的所有函數都會公開,以便從瀏覽器進行呼叫。
  • g.sijax.process_request():會告訴Sijax執行適當的(先前註冊的)函數並將響應返回給瀏覽器。

效果:

寫在最後

搞的破環境搞了進半天,效率有點低了,但是我也不到為啥不行,各種招都試了,就是10060or10061,防火牆我真關了,真的被虐的好疼!

但也沒什麼,累了、心情不好看看AI女友,怎麼心情也會很快好起來的,可能有人會說,你是不是因為喜歡看美女?

我承認呀,誰不愛看美女,你說是不是?

有人會說,我不信,你讓她自己說呀,來,安排!
安排,直接上效果: