Python Flask Web開發筆記(一)

2021-10-19 13:09:17 字數 3903 閱讀 2720

由於專案需要,需要學習python flask web開發,下面是學習的記錄(參考部落格)

首先在pycharm中安裝flask包,然後新建乙個py檔案,檔案中插入以下**,進行測試:

from flask import flask  

def hello_world():

return 'hello world!'

if __name__ == '__main__':

然後執行程式,會出現

* running on  (press ctrl+c to quit)
在瀏覽器開啟上面**,會出現「hello world」字樣,表示flask包呼叫成功。

def hello_world():

return 'hello world!'

當客戶端訪問/時,將響應hello_world()函式返回的內容。注意,這裡返回的是http報文,hello world!只是http響應報文的實體部分,狀態碼等資訊既可以由flask自動處理,也可以通過程式設計來制定。

這局**為了程式命名__name__在python 中預設為字串「__main__」

完整的使用方法如下:path1存放靜態資源,path2存放模板。 

0.0.0.0代表電腦所有的ip。80是http**服務的預設埠。什麼是預設?比如,我們訪問**,其實是訪問的:80,只不過:80可以省略不寫。由於繫結了80埠,需要使用root許可權執行server.py

列出所有的url引數,輸入一下**:

from flask import flask, request  

def hello_world():

return request.args.__str__()

if __name__ == '__main__':

在電腦瀏覽器中執行** ?user=flask&time&p=7&p=8

會出現一下結果

瀏覽器傳給我們的flask服務的資料長什麼樣子呢?可以通過request.full_path和request.path來看一下:

from flask import flask, request  

def hello_world():

print(request.path)

print(request.full_path)

return request.args.__str__()

if __name__ == '__main__':

檢視post中的資料,以使用者註冊為例子,我們需要向伺服器/register傳送使用者名稱name和密碼password。**如下編寫

from flask import flask, request  

def hello_world():

return 'hello world'

def register():

print(request.headers)

print(request.stream.read())

return 'welcome'

if __name__ == '__main__':

執行成功以後,我們可以從之前的執行結果看到一下結果:

host: 127.0.0.1:5000

user-agent: python-requests/2.25.1

accept-encoding: gzip, deflate

accept: */*

connection: keep-alive

content-length: 24

b'name=letian&password=123'

接下來解析post中的資料,其中 b'name=letian&password=123'  我們從中提取出name 和password,可以使用python中的request.form,例項**如下:

from flask import flask, request  

def hello_world():

return 'hello world'

def register():

print(request.headers)

# print(request.stream.read()) # 不要用,否則下面的form取不到資料

print(request.form)

print(request.form['name'])

print(request.form.get('name'))

print(request.form.getlist('name'))

return 'welcome'

if __name__ == '__main__':

可以在flask檔案**現一下資料:

immutablemultidict([('name', 'letian'), ('password', '123')])

letian

letian

['letian']

request.form會自動解析資料。request.form['name']request.form.get('name')都可以獲取name對應的值。對於request.form.get()可以為引數default指定值以作為預設值。

使用 http post 方法傳到**伺服器的資料格式可以有很多種。我們也可以用json格式、xml格式。相比xml的重量、規範繁瑣,json顯得非常小巧和易用。如果post的資料是json格式,request.json會自動將json資料轉換成python型別(字典或者列表)。**如下:

from flask import flask, request  

def hello_world():

return 'hello world!'

def add():

print(request.headers)

print(type(request.json))

print(request.json)

result = request.json['a'] + request.json['b']

return str(result)

if __name__ == '__main__':

附python檔案**如下:

import requests

json_data =

r = requests.post("add", json=json_data)

print(r.text)

執行結果如下:

host: 127.0.0.1:5000

user-agent: python-requests/2.19.1

accept-encoding: gzip, deflate

accept: */*

connection: keep-alive

content-length: 16

python Flask Web開發入門(一)

原文 1.如何用pip安裝python包 demo 如何安裝flask 2.乙個簡單的demo 大多數python包都使用pip實用工具安裝,使用pyvenv建立的虛擬環境會自動安裝pip。1.使用pip安裝flask 其它python包同理 if name main 從demo中學習路由 修飾器 ...

python flaskweb學習筆記二

在 orm 中,模型一般是乙個 python 類,類中的屬性對應資料庫表中的列。最常用的sqlalchemy列型別 型別名 python型別 說 明 integer int普通整數,一般是 32 位 smallinteger int取值範圍小的整數,一般是 16 位 biginteger int 或...

Python Flask WEB框架的入門方法

encoding utf 8 from flask import flask from flask import render template from flask import jsonify from flask import request from flask import make re...