最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python flash URL訪問參數(shù)配置

 更新時(shí)間:2025年12月09日 09:34:01   作者:猩火燎猿  
本文主要介紹了Python flash URL訪問參數(shù)配置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 路徑參數(shù)(Route Parameters)

路徑參數(shù)指的是 URL 路徑中的一部分被當(dāng)作變量傳遞給視圖函數(shù)。

示例

from flask import Flask
 
app = Flask(__name__)
 
@app.route('/user/<username>')
def show_user_profile(username):
    return f'User: {username}'
  • 訪問 /user/alice,返回 User: alice
  • <username> 是路徑參數(shù)

類型轉(zhuǎn)換

可以指定參數(shù)類型:

  • <int:id>:只匹配整數(shù)
  • <float:score>:只匹配浮點(diǎn)數(shù)
  • <path:subpath>:匹配路徑(可包含 /
@app.route('/post/<int:post_id>')
def show_post(post_id):
    return f'Post ID: {post_id}'

2. 查詢參數(shù)(Query Parameters)

查詢參數(shù)是 URL 中 ?key=value 的部分,常用于 GET 請(qǐng)求。

示例

from flask import request
 
@app.route('/search')
def search():
    keyword = request.args.get('keyword', '')
    page = request.args.get('page', 1)
    return f'Search: {keyword}, Page: {page}'

訪問 /search?keyword=python&page=2,keyword 和 page 就能從 request.args 獲取。

3. 表單參數(shù)(Form Parameters)

用于 POST 請(qǐng)求,通過表單提交的數(shù)據(jù)。

示例

from flask import request
 
@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username')
    password = request.form.get('password')
    return f'Logging in: {username}'

4. JSON 參數(shù)

用于 POST 請(qǐng)求,客戶端以 JSON 格式發(fā)送數(shù)據(jù)。

示例

from flask import request
 
@app.route('/api/data', methods=['POST'])
def api_data():
    data = request.get_json()
    return f'Received: {data}'

5. 多參數(shù)/默認(rèn)值/類型轉(zhuǎn)換

  • request.args.get('key', default, type=type) 可以設(shè)置默認(rèn)值和類型
  • 路徑參數(shù)類型見前文
page = request.args.get('page', 1, type=int)

6. 路徑參數(shù)進(jìn)階

多個(gè)參數(shù)

你可以在路由中定義多個(gè)參數(shù):

@app.route('/book/<int:book_id>/chapter/<int:chapter_id>')
def show_chapter(book_id, chapter_id):
    return f'Book: {book_id}, Chapter: {chapter_id}'

可選參數(shù)

Flask 的路由不支持直接可選參數(shù),但可以通過多個(gè)路由實(shí)現(xiàn):

@app.route('/item/')
@app.route('/item/<int:item_id>')
def show_item(item_id=None):
    if item_id:
        return f'Item ID: {item_id}'
    else:
        return 'No Item ID'

7. 查詢參數(shù)進(jìn)階

獲取所有參數(shù)

request.args 是一個(gè)類似字典的對(duì)象,可以獲取所有參數(shù):

@app.route('/params')
def params():
    all_params = request.args.to_dict()
    return str(all_params)

多值參數(shù)

如果一個(gè)參數(shù)可能有多個(gè)值,比如 ?tag=python&tag=flask

tags = request.args.getlist('tag')

8. 表單參數(shù)進(jìn)階

獲取所有表單數(shù)據(jù)

@app.route('/submit', methods=['POST'])
def submit():
    form_data = request.form.to_dict()
    return str(form_data)

文件上傳

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    file.save(f'./uploads/{file.filename}')
    return 'File uploaded!'

9. JSON參數(shù)進(jìn)階

校驗(yàn) JSON 數(shù)據(jù)

可以用 Flask 的 request.get_json(force=True) 強(qiáng)制解析 JSON:

@app.route('/json', methods=['POST'])
def json_view():
    data = request.get_json(force=True)
    if not data or 'name' not in data:
        return 'Missing name!', 400
    return f"Hello, {data['name']}"

10. 路由中的 URL 構(gòu)建

Flask 推薦使用 url_for 來生成 URL,避免硬編碼:

from flask import url_for
 
@app.route('/profile/<username>')
def profile(username):
    return f'Profile: {username}'
 
# 在其他地方
url = url_for('profile', username='alice')

11. 常見問題與調(diào)試技巧

  • 路由沖突:多個(gè)路由路徑一致時(shí),只有第一個(gè)生效。
  • 參數(shù)類型錯(cuò)誤:比如 <int:id>,如果訪問 /user/abc 會(huì) 404。
  • 使用 request.args.get('key', type=int) 可以避免類型轉(zhuǎn)換錯(cuò)誤。
  • 推薦使用 Flask 的調(diào)試模式:app.run(debug=True)

12. 最佳實(shí)踐

  • 路由參數(shù)盡量加類型限制,提升安全性和可讀性。
  • 查詢參數(shù)建議設(shè)置默認(rèn)值和類型轉(zhuǎn)換。
  • 表單和 JSON 數(shù)據(jù)建議做數(shù)據(jù)校驗(yàn)。
  • 使用 url_for 生成 URL,避免硬編碼。
  • 對(duì)外暴露的 API 建議使用 RESTful 風(fēng)格。

13. 典型應(yīng)用場(chǎng)景舉例

RESTful API 路由設(shè)計(jì)

@app.route('/api/users/<int:user_id>', methods=['GET', 'PUT', 'DELETE'])
def user_api(user_id):
    if request.method == 'GET':
        # 查詢用戶信息
        ...
    elif request.method == 'PUT':
        # 更新用戶信息
        ...
    elif request.method == 'DELETE':
        # 刪除用戶
        ...

搜索分頁接口

@app.route('/search')
def search():
    keyword = request.args.get('keyword', '')
    page = request.args.get('page', 1, type=int)
    size = request.args.get('size', 10, type=int)
    # 返回搜索結(jié)果
    ...

14. 參數(shù)校驗(yàn)與錯(cuò)誤處理

路徑參數(shù)校驗(yàn)

Flask 路由定義時(shí)已做基本類型校驗(yàn)(如 <int:id>),但有時(shí)需要更復(fù)雜的校驗(yàn),可以在視圖函數(shù)內(nèi)處理:

@app.route('/user/<username>')
def user_profile(username):
    if not username.isalnum():
        return "用戶名不合法", 400
    # 繼續(xù)處理
    ...

查詢參數(shù)校驗(yàn)

常見做法是判斷參數(shù)是否存在、類型是否正確:

@app.route('/search')
def search():
    keyword = request.args.get('keyword')
    if not keyword:
        return "缺少搜索關(guān)鍵詞", 400
    page = request.args.get('page', default=1, type=int)
    if page < 1:
        return "頁碼必須大于0", 400
    ...

JSON 參數(shù)校驗(yàn)

建議結(jié)合 pydantic 或 marshmallow 進(jìn)行結(jié)構(gòu)化校驗(yàn):

from flask import request
from marshmallow import Schema, fields, ValidationError
 
class UserSchema(Schema):
    name = fields.Str(required=True)
    age = fields.Int(required=True)
 
@app.route('/api/user', methods=['POST'])
def create_user():
    try:
        data = UserSchema().load(request.get_json())
    except ValidationError as err:
        return err.messages, 400
    # data 是校驗(yàn)后的字典
    ...

15. RESTful 風(fēng)格參數(shù)設(shè)計(jì)

  • GET 用于查詢(通過路徑參數(shù)、查詢參數(shù))
  • POST 用于創(chuàng)建(通過 JSON、表單參數(shù))
  • PUT/PATCH 用于更新(通過路徑參數(shù)+JSON)
  • DELETE 用于刪除(通過路徑參數(shù))

示例:

@app.route('/api/items/<int:item_id>', methods=['GET', 'PUT', 'DELETE'])
def item_api(item_id):
    if request.method == 'GET':
        # 查詢
        ...
    elif request.method == 'PUT':
        # 更新
        ...
    elif request.method == 'DELETE':
        # 刪除
        ...

16、Flask 2.0 及以上版本提供的新路由注冊(cè)方式

(1). 基本用法

@app.get

注冊(cè)一個(gè)只響應(yīng) GET 請(qǐng)求的路由:

from flask import Flask, request
 
app = Flask(__name__)
 
@app.get('/hello')
def hello():
    name = request.args.get('name', 'World')
    return f'Hello, {name}!'

等價(jià)于:

@app.route('/hello', methods=['GET'])
def hello():
    ...

@app.post

注冊(cè)一個(gè)只響應(yīng) POST 請(qǐng)求的路由:

@app.post('/submit')
def submit():
    data = request.form.get('data')
    return f'You submitted: {data}'

等價(jià)于:

@app.route('/submit', methods=['POST'])
def submit():
    ...

(2). 混合用法

如果你希望同一路由支持多種方法(比如 GET 和 POST),還是需要用 @app.route

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'GET':
        return 'Login Page'
    else:
        username = request.form.get('username')
        return f'Welcome, {username}'

(3). 適用場(chǎng)景

  • @app.get('/xxx') 適合只讀接口(查詢、頁面渲染等)。
  • @app.post('/xxx') 適合只寫接口(表單提交、數(shù)據(jù)創(chuàng)建等)。
  • 多方法共用時(shí),仍建議用 @app.route()。

(4). 版本要求

  • 需要 Flask 2.0 及以上版本。
  • 低于 2.0 的 Flask 沒有 @app.get 和 @app.post,只能用 @app.route()。

(5). 代碼示例

from flask import Flask, request
 
app = Flask(__name__)
 
@app.get('/api/info')
def get_info():
    return {'info': 'This is a GET endpoint'}
 
@app.post('/api/info')
def post_info():
    data = request.get_json()
    return {'received': data}

(6). 總結(jié)

  • @app.get('/path') == @app.route('/path', methods=['GET'])
  • @app.post('/path') == @app.route('/path', methods=['POST'])
  • 讓代碼更簡(jiǎn)潔、語義更明確
  • 只在 Flask 2.0+ 可用

17. 使用 Flask 擴(kuò)展簡(jiǎn)化參數(shù)處理

Flask-RESTful

簡(jiǎn)化 REST API 的參數(shù)獲取和校驗(yàn):

from flask import Flask
from flask_restful import Resource, Api, reqparse
 
app = Flask(__name__)
api = Api(app)
 
class Hello(Resource):
    def get(self):
        parser = reqparse.RequestParser()
        parser.add_argument('name', type=str, required=True, help='Name cannot be blank')
        args = parser.parse_args()
        return {'hello': args['name']}
 
api.add_resource(Hello, '/hello')

Flask-Swagger / Flask-apispec

自動(dòng)生成接口文檔,并支持參數(shù)校驗(yàn)。

18. 參數(shù)默認(rèn)值與類型轉(zhuǎn)換技巧

  • request.args.get('key', default=xxx, type=xxx)
  • request.form.get('key', default=xxx, type=xxx)

示例:

limit = request.args.get('limit', default=10, type=int) 

19. 復(fù)雜數(shù)據(jù)結(jié)構(gòu)的參數(shù)處理

有時(shí)候前端會(huì)以數(shù)組、字典等復(fù)雜結(jié)構(gòu)傳參,常見方式:

  • 查詢參數(shù):?ids=1&ids=2&ids=3,用 getlist
  • JSON 參數(shù):直接傳遞復(fù)雜結(jié)構(gòu)
ids = request.args.getlist('ids')
# JSON: request.get_json()['items']

20. 參數(shù)安全與防注入

  • 對(duì)路徑參數(shù)、查詢參數(shù)、表單參數(shù)都要做校驗(yàn)(長(zhǎng)度、格式、類型、特殊字符)
  • 對(duì) SQL 查詢要用 ORM 或參數(shù)化防止 SQL 注入
  • 對(duì)文件上傳要檢查文件類型和大小

21. 實(shí)際項(xiàng)目中的參數(shù)設(shè)計(jì)建議

  • 路由設(shè)計(jì)要簡(jiǎn)潔、語義清晰
  • 參數(shù)命名統(tǒng)一,避免歧義
  • 必填參數(shù)要明確說明,選填參數(shù)要有合理默認(rèn)值
  • 錯(cuò)誤返回要有明確提示(如 400 Bad Request)

22. 常見問題答疑

  • 參數(shù)獲取不到? 檢查請(qǐng)求方法、參數(shù)名和數(shù)據(jù)格式是否一致。
  • 類型轉(zhuǎn)換失敗? 用 type=int 等參數(shù),或在代碼里 try/except 捕獲異常。
  • 參數(shù)沖突? 路由和參數(shù)名要避免重名,優(yōu)先使用 RESTful 風(fēng)格。

到此這篇關(guān)于Python flash URL訪問參數(shù)配置的文章就介紹到這了,更多相關(guān)Python flash URL訪問內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python-OpenCV基本操作方法詳解

    Python-OpenCV基本操作方法詳解

    下面小編就為大家分享一篇Python-OpenCV基本操作方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python中的哈希算法模塊hashlib詳解

    Python中的哈希算法模塊hashlib詳解

    這篇文章主要介紹了Python中的哈希算法模塊hashlib詳解,hashlib模塊實(shí)現(xiàn)了多種哈希算法,包括MD5以及SHA家族的算法,通過algorithms_guaranteed可以查看hashlib中封裝的所有算法,需要的朋友可以參考下
    2023-08-08
  • Python命令行中引導(dǎo)用戶指定選擇文檔示例

    Python命令行中引導(dǎo)用戶指定選擇文檔示例

    這篇文章主要為大家介紹了Python命令行中引導(dǎo)用戶指定選擇文檔示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 使用Python實(shí)現(xiàn)在Word中添加或刪除超鏈接

    使用Python實(shí)現(xiàn)在Word中添加或刪除超鏈接

    在Word文檔中,超鏈接是一種將文本或圖像連接到其他文檔、網(wǎng)頁或同一文檔中不同部分的功能,本文將為大家介紹一下Python如何實(shí)現(xiàn)在Word中添加或刪除超鏈接,需要的可以參考下
    2025-01-01
  • windows下python 3.6.4安裝配置圖文教程

    windows下python 3.6.4安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了windows下python 3.6.4安裝配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • PyQt5每天必學(xué)之布局管理

    PyQt5每天必學(xué)之布局管理

    這篇文章主要為大家詳細(xì)介紹了PyQt5每天必學(xué)之布局管理的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 一篇文章徹底搞懂python正則表達(dá)式

    一篇文章徹底搞懂python正則表達(dá)式

    正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配,Python 自1.5版本起增加了re模塊,這篇文章主要給大家介紹了如何通過一篇文章徹底搞懂python正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 使用Python插入SVG到PDF文檔中的方法示例

    使用Python插入SVG到PDF文檔中的方法示例

    將SVG(可縮放矢量圖形)文件插入到PDF(便攜式文檔格式)文件中不僅能夠保留SVG圖像的矢量特性,確保圖像在任何分辨率下都保持清晰,使得技術(shù)文檔、手冊(cè)、報(bào)告等內(nèi)容更加豐富多樣且易于傳播,本文將介紹如何使用Python插入SVG文件到PDF文檔中,需要的朋友可以參考下
    2024-08-08
  • Python使用numpy模塊實(shí)現(xiàn)矩陣和列表的連接操作方法

    Python使用numpy模塊實(shí)現(xiàn)矩陣和列表的連接操作方法

    今天小編就為大家分享一篇Python使用numpy模塊實(shí)現(xiàn)矩陣和列表的連接操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python 正則表達(dá)式大全(推薦)

    Python 正則表達(dá)式大全(推薦)

    正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,正則表達(dá)式是一種文本模式,該模式描述在搜索文本時(shí)要匹配的一個(gè)或多個(gè)字符串。本文重點(diǎn)給大家介紹Python 正則表達(dá)式大全,感興趣的朋友一起看看吧
    2021-11-11

最新評(píng)論

柳州市| 福安市| 安化县| 龙州县| 宁夏| 墨竹工卡县| 德安县| 贵州省| 辛集市| 绥棱县| 长泰县| 临清市| 义马市| 长泰县| 丹巴县| 汤阴县| 陵水| 石泉县| 东源县| 南京市| 泽库县| 方城县| 揭东县| 天祝| 林西县| 新津县| 西乌| 上蔡县| 勃利县| 湘潭市| 高雄县| 邯郸市| 巢湖市| 蒙山县| 肇州县| 黔江区| 南昌县| 福安市| 丁青县| 广汉市| 抚顺市|