久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

flask第七篇——URL與視圖函數(shù)的映射

 孟船長 2022-02-24

今天開始就要進(jìn)入正題了,。大家都準(zhǔn)備好了吧~

代碼提示

        先和大家說個(gè)小知識點(diǎn):有同學(xué)后臺說輸入flask代碼pycharm不提示,,現(xiàn)在告訴你一個(gè)解決方法:app = Flask(__name__)  # type: Flask在上面代碼后面加上# type: Flask就會提示啦。

URL與視圖函數(shù)的映射

url與視圖函數(shù)的映射是通過@app.route()裝飾器實(shí)現(xiàn)的,。

  • 1,、只有一個(gè)斜杠代表的是根目錄——首頁。

# coding: utf-8

from flask import Flask

# __name__是用來確定flask運(yùn)行的主文件
app = Flask(__name__)  # type: Flask
app.debug = True

# app.config.from_object('configs')

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

if __name__ == '__main__':    app.run()

    上面代碼`@app.route('/')`裝飾器傳參只有一個(gè)斜杠/,這時(shí)候運(yùn)行代碼就會跳轉(zhuǎn)到根目錄——首頁,。如圖:

  • 2,、傳參

        URL傳參是通過`<參數(shù)名稱>`的形式進(jìn)行傳遞。另外,,URL中有幾個(gè)參數(shù),,在視圖函數(shù)中也要指定幾個(gè)參數(shù)。參數(shù)名稱可以自己定義,,代碼如下:

# coding: utf-8

from flask import Flask

# __name__是用來確定flask運(yùn)行的主文件
app = Flask(__name__)  # type: Flask
app.debug = True

# app.config.from_object('configs')
# 根目錄
@app.route('/')
def hello_world():    return 'Hello World!'

# 傳參
@app.route('/content/<username>/<password>/')

def login(username, password):    return u'我的用戶名是:%s,,密碼是:%s' % (username, password)

if __name__ == '__main__':    app.run()

執(zhí)行代碼后,在瀏覽器輸入你設(shè)置的地址可以看到:

需要注意的是,,上面<>里面寫的參數(shù)名稱必須和你def函數(shù)里傳參名稱相同,,比如我寫的參數(shù)名叫username,那么我代碼里login后面的形參名稱必須叫username,,上面代碼我傳了兩個(gè)參數(shù),,地址寫的時(shí)候分別傳了warrior和123。

  • 3,、URL的數(shù)據(jù)類型

1)如果沒有指定,,默認(rèn)是string類型
2)string:字符串,接收任何沒有斜杠/的字符,。
3)int:整型
4)float:浮點(diǎn)類型
5)path:和string類似,,但是可以接收斜杠/
6)uuid:只接收uuid字符串
7)any:可以指定多個(gè)路徑

例如,現(xiàn)在我們指定一個(gè)參數(shù)為int類型:
# coding: utf-8

from flask import Flask

# __name__是用來確定flask運(yùn)行的主文件
app = Flask(__name__)  # type: Flask
app.debug = True

# 根目錄
@app.route('/')
def hello_world():    return 'Hello World!'

# @app.route('/content/<username>/<password>/')
# def login(username, password):

#     return u'我的用戶名是:%s,,密碼是:%s' % (username, password)

@app.route('/content/<int:username>/<int:password>/')
def login(username, password):    return u'我的用戶名是:%s,,密碼是:%s' % (username, password)

if __name__ == '__main__':    app.run()

在頁面中我傳入兩個(gè)1,,可以看到:

但是當(dāng)我傳入warrior和1以后就找不到頁面了,因?yàn)閣arrior不是int類型:

uuid

        接下來簡單說一下uuid,,因?yàn)閡uid在傳參的時(shí)候更長用,,uuid就是唯一的一串字符,永遠(yuǎn)不會出現(xiàn)重復(fù),,比如:

# coding: utf-8

from flask import Flask
import uuid

app = Flask(__name__)  # type: Flask
app.debug = True


# 根目錄
@app.route('/')
def hello_world():    return 'Hello World!'

# @app.route('/content/<username>/<password>/')
# def login(username, password):

#     return u'我的用戶名是:%s,,密碼是:%s' % (username, password)


@app.route('/content/<uuid:username>/')
def login(username):    return u'我的用戶名是:%s' % (username)

print uuid.uuid4()

if __name__ == '__main__':    app.run()

上面代碼中我們先導(dǎo)入了import uuid模塊,然后通過print uuid.uuid4()打印出了一串uuid:

這時(shí)候因?yàn)槲覀冎付藆sername是uuid類型的,,所以當(dāng)我們進(jìn)入http://127.0.0.1:5000/content/1/的時(shí)候就會找不到地址,,我們將控制臺打印的uuid替換1:http://127.0.0.1:5000/content/7bdcd04c-62fd-48e8-b12b-bbd636cd0315/就可以看到:

any

    any就是指定傳遞的任意參數(shù),比如下面代碼我們指定傳參為username或者blog,,那么我們在URL中輸入username或者blog都會鏈接到指定頁面,,輸入any指定參數(shù)以外的內(nèi)容頁面則會報(bào)錯(cuò):

# coding: utf-8

from flask import Flask
import flask
import uuid


app = Flask(__name__)  # type: Flask
app.debug = True


# 根目錄
@app.route('/')
def hello_world():    return 'Hello World!'

# @app.route('/content/<username>/<password>/')
# def login(username, password):

#     return u'我的用戶名是:%s,密碼是:%s' % (username, password)


@app.route('/content/<uuid:username>/')
def login(username):    return u'我的用戶名是:%s' % (username)


@app.route('/post/<any(username,blog):name>/')
def post_info(name):    return u'id是:%s' % name


print uuid.uuid4()

if __name__ == '__main__':    app.run()

參數(shù)傳遞

        最后我們來說一下參數(shù)傳遞,。理論上推薦path——接收帶斜杠的字符串形式傳遞參數(shù),,因?yàn)檫@樣有利于網(wǎng)站的SEO即網(wǎng)站在搜索引擎結(jié)果的排名:

@app.route('/post/<path:username>/')
def user(username):    return u'用戶名字是:%s' % username

    另一種傳參方式就是大部分網(wǎng)站在用的?path=1&username=warrior這種查詢字符串的方式:

@app.route('/post/')
def question():    post_id = flask.request.args.get('post_id')
   return u'post_id是:%s' % post_id

上面flask.request.args.get('post_id')就是獲取地址里的傳參:

至于想用哪種方式,就看你是不是在乎自己網(wǎng)站在搜索引擎中的排名啦~

這一節(jié)內(nèi)容稍微有點(diǎn)多,,大家慢慢消化,,最后把代碼貼給大家,供大家參考:

# coding: utf-8

from flask import Flask
import flask
import uuid


# __name__是用來確定flask運(yùn)行的主文件
app = Flask(__name__)  # type: Flask
app.debug = True


# 根目錄
@app.route('/')
def hello_world():    return 'Hello World!'

# @app.route('/content/<username>/<password>/')
# def login(username, password):

#     return u'我的用戶名是:%s,,密碼是:%s' % (username, password)


# uuid
@app.route('/content/<uuid:username>/')
def login(username):    return u'我的用戶名是:%s' % (username)


# any
@app.route('/post/<any(username,blog):name>/')
def post_info(name):    return u'id是:%s' % name


# path
@app.route('/post/<path:username>/')
def user(username):    return u'用戶名字是:%s' % username


# ?id=1&user=warrior形式傳遞參數(shù)
@app.route('/post/')
def question():    post_id = flask.request.args.get('post_id')
   return u'post_id是:%s' % post_id
   
   
print uuid.uuid4()

if __name__ == '__main__':    app.run()

感謝@zuz5的贊賞和提的建議~~

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多