2、Flask實戰第2天:URL傳參


當我們訪問網站/的時候,會執行hell_world函數,並把這個函數的返回值返回給瀏覽器,這樣瀏覽器就顯示hello world了

@app.route('/')
def hello_world():
    return 'Hello World!'

按照這種映射關系,我們可以再寫一個,比如文章列表

@app.route('/article_list/')
def article_list():
    return 'Article list'

這樣,我們訪問127.0.0.1:5000/article_list/的時候,瀏覽器就會顯示Article list

那么我們要如何給url傳參呢?

比如我們來寫個文章詳情頁

@app.route('/article/<article_id>/')  #我們在<>里面寫參數名article_id
def article_detail(article_id):   #這里的參數名要和上面的一致,即article_id
    return '您請求的文章是:{}'.format(article_id)

訪問http://127.0.0.1:5000/article/1/

限定參數數據類型

可以對參數限定數據類型,比如上面的文章詳情,限定article_id必須為整數型

@app.route('/article/<int:article_id>/')
def article_detail(article_id):
    return '您請求的文章是:{}'.format(article_id)

這樣當我們傳遞的參數是int類型的時候才能正常訪問,其他類型都會返回404

類型可以設置提下幾種:

  string: 默認的數據類型,接收沒有任何斜杠"\   /"的文本

  int: 整數形

  float: 浮點型

  path: 和string類似,但是接受斜杠

  uuid: 只接受uuid字符串

  any: 可以指定多種路徑,比如以下例子

@app.route('/<any(article,blog):url_path>/<id>/')
def item(url_path, id):
    if url_path == 'article':
        return '文章詳情:{}'.format(id)
    else:
        return '博客詳情:{}'.format(id)

 ?key=value形式傳參

上面我們接受參數使用的是path形式,下面我們來使用查詢字符串的形式,即?key=value

如果有多個參數,則用&來拼接: ?key1=value1&key2=value2

from flask import Flask, request
...

@app.route('/d/')
def d():
    wd = request.args.get('wd')
    return '您傳遞的參數是: {}'.format(wd)

如果你的頁面想做SEO優化,就是被搜索引擎搜索到,那么推薦使用path形式

如果無所謂,可以使用查詢字符串方式

提醒

在定義url的時候,一定記得在最后加一個斜杠,

1、如果不加斜杠,那么在瀏覽器中訪問這個url的時候最后加了斜杠,那么就訪問不到了,用戶體驗不好

2、搜索引擎會將不加斜杠的和加斜杠的視為不同的url,而實際上是同一個,那么會給瀏覽器造成一個誤解,加了斜杠就不會出現斜杠的問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM