python的flask框架

Captain_686發表於2020-10-16

Flask URL構建

@app.route(/)

路由

Flask中的**route()**裝飾器用於將URL繫結到函式


methods

指定請求方法,有GET、POST 、DELETE、PUT

url構造

通過路由構造URL

@app.route("/login", methods = ['GET','POST'])
def login():
    pass

127.0.0.1:5000/login

app.run()

host

要監聽的主機名。 預設為127.0.0.1(localhost)。設定為“0.0.0.0”以使伺服器在外部可用

prot

預設埠,預設值為5000

debug

預設為false。 如果設定為true,則提供除錯資訊

資料互動

request

在Flask的官方文件中是這樣介紹request的:對於 Web 應用,與客戶端傳送給伺服器的資料互動至關重要。在 Flask 中由全域性的 request 物件來提供這些資訊。

從Flask模組匯入request:from flask import request
request的屬性:下面是request可使用的屬性,其中黑體是比較常用的。

屬性名解釋
form一個從POST和PUT請求解析的 MultiDict(一鍵多值字典)。
argsMultiDict,要操作 URL (如 ?key=value )中提交的引數可以使用 args 屬性:searchword = request.args.get(‘key’, ‘’)
valuesCombinedMultiDict,內容是formargs。 可以使用values替代form和args。
cookies請求的cookies,型別是dict。
stream在可知的mimetype下,如果進來的表單資料無法解碼,會沒有任何改動的儲存到這個 stream 以供使用。很多時候,當請求的資料轉換為string時,使用data是最好的方式。這個stream只返回資料一次。
headers請求頭,字典型別。
data包含了請求的資料,並轉換為字串,除非是一個Flask無法處理的mimetype。
filesMultiDict,帶有通過POST或PUT請求上傳的檔案。
environWSGI隱含的環境配置。
method請求方法,比如POST、GET。
path獲取請求檔案路徑:/myapplication/page.html
script_root
base_url獲取域名與請求檔案路徑:http://www.baidu.com/myapplication/page.html
url獲取全部url:http://www.baidu.com/myapplication/page.html?id=1&edit=edit
url_root獲取域名:http://www.baidu.com/
is_xhr如果請求是一個來自JavaScript XMLHttpRequest的觸發,則返回True,這個只工作在支援X-Requested-With頭的庫並且設定了XMLHttpRequest
blueprint藍圖名字。
endpointendpoint匹配請求,這個與view_args相結合,可是用於重構相同或修改URL。當匹配的時候發生異常,會返回None。
json如果mimetypeapplication/json,這個引數將會解析JSON資料,如果不是則返回None。 可以使用這個替代get_json()方法。
max_content_length只讀,返回MAX_CONTENT_LENGTH的配置鍵。
module如果請求是傳送到一個實際的模組,則該引數返回當前模組的名稱。這是棄用的功能,使用blueprints替代。
routing_exception = None如果匹配URL失敗,這個異常將會/已經丟擲作為請求處理的一部分。這通常用於NotFound異常或類似的情況。
url_rule = None內部規則匹配請求的URL。這可用於在URL之前/之後檢查方法是否允許(request.url_rule.methods) 等等。 預設情況下,在處理請求函式中寫下 print(‘request.url_rule.methods’, request.url_rule.methods) 會列印: request.url_rule.methods {‘GET’, ‘OPTIONS’, ‘HEAD’}
view_args = None一個匹配請求的view引數的字典,當匹配的時候發生異常,會返回None。
其他方法get_json(force=False, silent=False, cache=True)on_json_loading_failed(e)

模板

Flask中預設的模板語言是Jinja2

模板的位置放在templates資料夾下面,一般是html檔案,我們把index.html改動成如下樣式

<html>
  <head>
    <title>{{title}} - microblog</title>
  </head>
  <body>
      <h1>Hello, {{user.nickname}}!</h1>
  </body>
</html>

**{{}}**表示這是一個變數

在jinja2中,存在三種語法:

  1. 控制結構 {% %}
  2. 變數取值 {{ }}

jinja2模板中使用 {{ }} 語法表示一個變數,它是一種特殊的佔位符。當利用jinja2進行渲染的時候,它會把這些特殊的佔位符進行填充/替換,jinja2支援python中所有的Python資料型別比如列表、欄位、物件等。

  1. 註釋 {# #}

I. Jinja2模板語言中的 for

{% for foo in g %}

{% endfor %}

II. Jinja2模板語言中的 if

{% if g %}

{% elif g %}
    
{% else %}
    
{% endif %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>for</title>
</head>
<body>
for
<table>
    {% for foo in student %}
        <tr>
            <td>{{ foo }}</td>
            <td>{{ student.get(foo).name }}</td>
            <td>{{ student[foo].get("age") }}</td>
            <td>{{ student[foo]["gender"] }}</td>
        </tr>
    {% endfor %}
</table>
</body>
</html>

迭代字典

 {% for key, value in name.items() %}
    <h1>Key: {{key}}</h1>
    <h2>Value: {{value}}</h2>
    {% endfor %}

迭代列表

{% for row in rows %}
	{{ row }}
{% endfor %}

相關文章