Flask(3) - URL传参

分类: Python 作者: 浏览:36 时间:2019年5月27日 11:13 评论:0

URL与视图函数的映射

url与视图函数的映射是通过@app.route()装饰器实现的,而route中的参数表示路由路径

路由

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

这是项目自带的根路由,访问/路由时,页面会返回Hello World!
如果要访问文章列表只需要在写一个视图函数

@app.route("/list/")  
def hello_world():  
    return "Article List!"  

@app.route("/list/")  
def hello_world():  
    return "Article List!"  

这2种方法都可以访问,但为什么会存在2种方法呢?官网上给出了合理的解释
/list/尾部有一个斜杠,看起来就如同一个文件夹。访问一个没有斜杠结尾的 URL 时 Flask 会自动进行重定向,帮你在尾部加上一个斜杠。

list 的 URL 没有尾部斜杠,因此其行为表现与一个文件类似。如果访问这个 URL 时添加了尾部斜杠就会得到一个 404 错误。这样可以保持 URL 唯一,并帮助 搜索引擎避免重复索引同一页面。

参数传递

通过把 URL 的一部分标记为 就可以在 URL 中添加变量。标记的 部分会作为关键字参数传递给函数。通过使用 ,可以 选择性的加上一个转换器,为变量指定规则

路径类型 解释
string (缺省值) 接受任何不包含斜杠的文本
int 接受正整数
float 接受正浮点数
path 类似 string ,但可以包含斜杠
uuid 接受 UUID 字符串
@app.route("/user/<username>")  
def show_user_profile(username):  
    return 'User %s' % username  
# 不写类型,默认为string类型,接收所有字符串(不包括斜杠)  

@app.route("/post/<int:post_id>")  
def show_post(post_id):  
    return 'Post %d' % post_id  
# 只接受整形类型,传递其它类型会报404  

@app.route("/path/<path:subpath>")  
def show_subpath(subpath):  
    return 'Subpath %s' % subpath  
# 接收的数据类型和string类似,都是任意字符串,但path可以接收路径,也就是说包含斜杠  

@app.route("/user/<uuid:user_id>")  
def user(user_id):  
    return 'User %s' % user_id  
# 只接受uuid类型(唯一的一串字符),防止信息泄露  

还有一种参数传递的方法,通过查询字符串的方式,是通过前端表单的name属性来传递,flask通过request接收

from flask import request  

@app.route("/search/")  
def index():  
    keyword = request.args.get("wd")  
    return "wd:%keyword" % keyword  

访问地址:http://127.0.0.1:5000/search/?wd=flask

赞(0)

评论(0)

  • 暂无评论