flask輕松入門,概念講解

Hello World

Flask 是輕量級web框架,僅保留了核心功能:

  • 請求響應處理
  • 模板渲染
  • URL路由

文章目錄

  • Hello World
    • flask命令模式
    • python命令模式
    • 兩種模式對比
    • 修改入口文件配置
      • flask命令修改
      • python命令修改
    • 修改端口和地址
      • flask命令修改
      • python命令修改
    • 修改 URL 路由
      • 路由的基本組成:
      • 路由的工作流程:
      • 路由的優點:
      • Flask動態路由
      • Flask多URL綁定
      • 修改視圖函數
    • `url_for` 函數
      • 作用
      • 應用

flask命令模式

  • 命令行運行 flask run
# ./app.py
from flask import Flaskapp = Flask(__name__)@app.route("/")
def helloWorld():return '<h1>Hello wusp!</h1><img src="http://helloflask.com/totoro.gif">'

注意點:

  • 默認端口 5000
  • 默認入口文件名稱 app.py

python命令模式

  • ctrl+F10 pyharm 運行 。

  • 或者命令行 python app2.py

需要在代碼里面增加 app.run()

# ./app.py
from flask import Flaskapp = Flask(__name__)@app.route("/")
def helloWorld():return '<h1>Hello wusp!</h1><img src="https://img.suzone.net/biaoqing/201808/3924b2dfb6bcf13730ba75919f2f005f.gif">'app.run()

兩種模式對比

  • flask命令模式 運行和配置是調用 flask 命令,是 命令 + 代碼的方式結合。
  • python命令模式,是純代碼,flask 相關的配置均使用代碼,推薦。

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

修改入口文件配置

flask命令修改

在 Windows CMD 中使用 set 命令:

set FLASK_APP=hello.py

在 Windows PowerShell 中則使用下面的命令:

$env:FLASK_APP = "hello.py"

python命令修改

直接運行 python xxx.py 就行了,但是需要增加代碼 app.run()

修改端口和地址

flask命令修改

flask run --host=0.0.0.0 --port=8080

python命令修改

直接在代碼里面修改配置就行了

if __name__ == "__main__":app.run(host="0.0.0.0",port=5600,debug=True)
# ./app.py
from flask import Flaskapp = Flask(__name__)@app.route("/")
def helloWorld():return '<h1>Hello wusp!</h1><img src="https://img.suzone.net/biaoqing/201808/3924b2dfb6bcf13730ba75919f2f005f.gif">'if __name__ == "__main__":app.run(host="0.0.0.0",port=5600,debug=True)

修改 URL 路由

URL路由(也稱為“網址路由”或“Web路由”)是一種將Web請求(即用戶在瀏覽器地址欄輸入的URL)映射到代碼中相應的處理函數或資源的技術。在Web開發中,路由是Web服務器或Web框架的一個核心功能,它允許開發者定義一組規則,這些規則確定不同的URL請求應該由哪個部分的代碼來處理。

路由的基本組成:

  1. 請求方法:指定了請求的類型,最常見的是GET(讀取數據)和POST(提交數據),但還有PUT、DELETE等其他類型。
  2. 路由路徑:URL中的一部分,用于匹配請求的URL。它可以包含動態部分,這些部分用變量表示,通常以尖括號<variable_name>或冒號:variable_name來定義。
  3. 處理器函數:當路由匹配成功時,將調用的函數或方法。這個函數負責生成請求的響應。

路由的工作流程:

  1. 用戶輸入URL:用戶在瀏覽器地址欄輸入一個URL或點擊一個鏈接。
  2. 服務器接收請求:Web服務器接收到請求后,會檢查請求的URL和方法。
  3. 路由匹配:服務器根據預定義的路由規則查找匹配項。
  4. 執行處理器:一旦找到匹配的路由,服務器將調用相應的處理器函數。
  5. 生成響應:處理器函數生成響應(通常是HTML頁面、JSON數據等),并將其發送回用戶。

路由的優點:

  • 組織代碼:通過將URL映射到特定的處理函數,可以使Web應用的代碼結構更加清晰和模塊化。
  • URL設計自由:開發者可以自由設計URL結構,使其既符合用戶習慣也易于搜索引擎優化(SEO)。
  • 動態內容生成:可以定義動態路由,根據請求中的參數動態生成內容。
  • RESTful API支持:現代Web框架的路由系統支持RESTful API設計,便于構建和維護。

Flask動態路由

from flask import Flaskapp = Flask(__name__)@app.route('/home', methods=['GET'])
def home():return 'Welcome to the Home Page'@app.route('/users/<username>', methods=['GET'])
def show_user_profile(username):return f'User {username}'if __name__ == "__main__":app.run()

在這個示例中,Flask應用定義了兩個路由:

  • /home 路由響應GET請求,由 home 函數處理。
  • /users/<username> 路由是一個動態路由,<username> 是一個變量,可以匹配任何用戶名稱,由 show_user_profile 函數處理。

當用戶訪問這些URL時,Flask會根據定義的路由規則將請求映射到相應的處理函數。

Flask多URL綁定

@app.route("/")
@app.route("/index")
@app.route("/home")
def helloWorld():return '<h1>Hello world!</h1>'

修改視圖函數

視圖函數的名稱與URL路由規則無關

在這里插入圖片描述

url_for 函數

作用

  • 以視圖函數名作為參數,返回對應的url url_for('視圖函數名')
    • 支持動態路由傳參
    • 支持查詢字符串傳參
  • 靜態文件URL url_for('static', filename='style.css')

應用

以下代碼實現了:通過視圖函數名稱,拼接 a 鏈接 ,便捷的拿到視圖的跳轉地址。

@app.route("/url_for_test")
def url_for_test():helloWorld = url_for('helloWorld')#動態路由的形式,支持傳參print(url_for('user_page', name='greyli'))  # 輸出:/user/greyli# 非動態路由多出來的關鍵字,它們會被作為查詢字符串附加到 URL 后面。print(url_for('test_url_for', num=2))  # 輸出:/test?num=2print(helloWorld)#輸出靜態文件路徑style = url_for('static', filename='style.css')return f'<a href="{helloWorld}">helloWorld<a/>'

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23240.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23240.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23240.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java——順序表

前言&#xff1a;順序表是線性表的一種&#xff0c;它是較于數組更加靈活的一種儲存方式。線性表通常是邏輯上是連續的一條直線&#xff0c;但在物理上不是連續的。java中已經實現好了一個順序表&#xff0c;搭配泛型可以支持各種類型的使用&#xff0c;下面就來介紹該如何使用…

以太網:ARP和信息處理狀態機+代碼實現

ARP過程只需要一次發送和一次接受就可以完成了&#xff1b; 在實際實現協議棧的時候我個人認為要以主動ARP開始&#xff1b; 主動ARP&#xff1a;發送一次ARP請求&#xff0c;接受一個ARP報文&#xff1b; 使用這種方式的原因是上位機可能不知道你的IP地址&#xff08;當然如…

Mysql疑難報錯排查 - Field ‘XXX‘ doesn‘t have a default value

項目場景&#xff1a; 數據庫環境 &#xff1a;mysql8; 工程使用&#xff1a;MyBatisPlus 表情況&#xff1a; 問題描述 某一個插入語句使用了 MyBatisPlus 的 save 方法&#xff0c;因為end_time1 end_time2都并沒有值&#xff0c;所以在MyBatisPlus默認情況下&#xff0c;…

如何使自己寫的代碼易讀易懂?

〓● 如果代碼可讀性不佳、不容易理解&#xff0c;可能造成如下問題&#xff1a; 〓? 其他工程師浪費時間解讀它&#xff1b; 〓? 誤解導致引入缺陷&#xff1b; 〓? 其他工程師修改時破壞代碼。 〓● 提高代碼可讀性&#xff0c;有時候可能使其變得更為冗長、占用更多的…

【Python】深入認識Python數據類型和變量

???? 文章目錄 1. 引言數據類型的重要性Python中的數據類型概述 2. 數字類型整型&#xff08;int&#xff09;浮點型&#xff08;float&#xff09;復數&#xff08;complex&#xff09; 3. 字符串類型字符串的定義與使用字符串操作方法 4. 布爾類型布爾值和布爾運算 5. 列…

docker網絡詳解

1. 網絡模式 1.1 網絡結構 當安裝Docker以后&#xff0c;會自動創建三個網絡。可以使用docker network ls命令列出這些網絡。 $ docker network ls NETWORK ID NAME DRIVER SCOPE 440aefe8afa3 bridge bridge local aa8d6325580f host host …

02JAVA字符串和集合

1.字符串 1.String 介紹: String在java.lang包下,使用不需要導包,String代表字符串,帶""字符串都是String類的對象 字符串的特點: 字符串不可變,他們的值在創建后不能被改變 字符串效果相當于(char[]),底層原理是字節數組(byte[]) String構造方法: String 變量名 ne…

chat-glm4,qwen1.5性能對比

modelMMLUC-EvalGSM8KHumanEvalglm-4-9b74.777.184.070.1qwen1.5-7b6174.162.536.0qwen1.5-14b67.678.770.137.8 數據來源是以下兩個圖。可以看到GLM4非常優秀&#xff0c;qwen應該也快要開源自己的新模型了&#xff0c;希望國內的大模型團隊能夠繼續堅持&#xff0c;持續努力&…

AI框架之Spring AI與Spring Cloud Alibaba AI使用講解

文章目錄 1 AI框架1.1 Spring AI 簡介1.2 Spring AI 使用1.2.1 pom.xml1.2.2 可實現的功能 1.3 Spring Cloud Alibaba AI1.4 Spring Cloud Alibaba AI 實踐操作1.4.1 pom.xml1.4.2 配置文件1.4.3 對接文本模型1.4.4 文生圖模型1.4.5 語音合成模型 1 AI框架 1.1 Spring AI 簡介…

NSSCTF-Web題目5

目錄 [SWPUCTF 2021 新生賽]error 1、題目 2、知識點 3、思路 [LitCTF 2023]作業管理系統 1、題目 2、知識點 3、思路 [HUBUCTF 2022 新生賽]checkin 1、題目 2、知識點 3、思路 [SWPUCTF 2021 新生賽]error 1、題目 2、知識點 數據庫注入、報錯注入 3、思路 首先…

淺談InoDB中的行級鎖

行級鎖的類型&#xff1a; Record Lock&#xff0c;記錄鎖&#xff0c;僅僅把?條記錄鎖上&#xff0c;記錄鎖分為排他鎖和共享鎖。Gap Lock&#xff0c;間隙鎖&#xff0c;鎖定?個范圍&#xff0c;但是不包含記錄本身&#xff0c;只存在于可重復讀隔離級別&#xff0c;?的是…

Oracle 重置system用戶的密碼

荊軻刺秦王 如果您忘記了Oracle數據庫的密碼&#xff0c;可以通過以下步驟來重置密碼&#xff1a; Oracle 版本&#xff1a;linux 11g Release 11.2.0.4.0-64bit Froduction 1. 以SYSDBA權限登錄到數據庫。 conn / as sysdba 2. 停止數據庫實例。 shutdown immediate; 3…

vue 文件預覽mp4、txt、pptx、xls、xlsx、docx、pdf、html、xml

vue 文件預覽 圖片、mp4、txt、pptx、xls、xlsx、docx、pdf、html、xml 最近公司要做一個類似電腦文件夾的功能&#xff0c;支持文件夾操作&#xff0c;文件操作,這里就不說文件夾操作了&#xff0c;說說文件預覽操作&#xff0c;本人是后端java開發&#xff0c;前端vue&#…

Nginx通過轉發代理解決跨域問題

前后端分離開發WEB端&#xff08;瀏覽器&#xff09;&#xff0c;不可避免的就是要解決跨域問題&#xff0c;因為這是瀏覽器的一種安全機制&#xff0c;當請求的&#xff08;1&#xff09;域名、&#xff08;2&#xff09;端口、&#xff08;3&#xff09;協議 。其中的一項與源…

MySQL如何多表關聯更新

在 MySQL 中,多表關聯更新可以使用 UPDATE 語句與 JOIN 子句結合來實現。以下是一個多表關聯更新的基本示例: 基本語法 UPDATE table1 JOIN table2 ON table1.column = table2.column SET table1.column = new_value, table2.column = new_value WHERE condition;

Linux系統安裝APITable詳細流程與遠程訪問本地平臺數據分析

文章目錄 前言1. 部署APITable2. cpolar的安裝和注冊3. 配置APITable公網訪問地址4. 固定APITable公網地址 &#x1f4a1;推薦 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。【點擊跳轉到網站】 前言 v…

AMD顯卡和英偉達顯卡哪個好?

顯卡是計算機中負責處理圖形和視頻輸出的硬件設備&#xff0c;主要分為兩種類型&#xff1a;AMD的A卡和NVIDIA的N卡。那么AMD顯卡和英偉達顯卡哪個好&#xff1f;怎么選&#xff1f; 答&#xff1a;不能一概而論地說哪個好&#xff0c;因為它們各有優勢&#xff0c;選擇應基于…

listbox有scrollviewer,點擊后不會觸發selectionchanged事件

這個問題是因為在ListBox中的ScrollViewer處于焦點狀態時&#xff0c;SelectionChanged事件沒有觸發。這通常是因為ScrollViewer在處理鼠標事件時會優先于ListBox。 為了解決這個問題&#xff0c;可以通過以下方法來確保SelectionChanged事件在ListBox中被觸發&#xff1a; 在…

RE_RC4加密

之前做的幾道題目&#xff0c;rc4也是經常遇到&#xff0c;今來系統學學&#xff0c;記錄一下 對稱加密&#xff0c;即加密和解密的密鑰可以相互推導&#xff0c;也有的是相同的。 RC4 是以字節流處理每一個字節&#xff0c;而不是 DES 的分組操作。 包含三個參數&#xff1…

探索通信技術的未來:2024中國通信技術和智能裝備產業博覽會

探索通信技術的未來&#xff1a;2024通信技術產業專場 隨著信息技術的飛速發展&#xff0c;通信技術已成為現代社會不可或缺的基礎設施。2024年10月11日至13日&#xff0c;青島將迎來一場通信技術的盛會——2024中國軍民兩用智能裝備與通信技術產業博覽會。本次博覽會不僅將展…