flask学习之--路由

路由

1 什么是路由

​ 个人理解,就是路径,客户端去访问到服务器中的HTML文件的访问路径

​ 使用route()装饰器来把函数去绑定到URL 中

​ 例如:

@app.route('/')
def index():
    return 'Index Page'

@app.route('/hello')
def hello():
    return 'Hello, World'

2 变量规则

​ 除了上述那种简单的规则外,在实际的过程中,通过把 URL 的一部分标记为 <variable_name> 就可以在 URL 中添加变量。标记的 部分会作为关键字参数传递给函数。通过使用 <converter:variable_name> ,可以 选择性的加上一个转换器,为变量指定规则。请看下面的例子:

@app.route('/user/<username>')
def show_user_profile(username):
    # show the user profile for that user
    return 'User %s' % escape(username)

@app.route('/post/<int:post_id>')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return 'Post %d' % post_id

@app.route('/path/<path:subpath>')
def show_subpath(subpath):
    # show the subpath after /path/
    return 'Subpath %s' % escape(subpath)

相当于通过URL 将前端页面上的参数,返回到服务器,进行分类显示/跳转等等操作

具体的转换器类型列表如下:

string (缺省值) 接受任何不包含斜杠的文本
int 接受正整数
float 接受正浮点数
path 类似 string ,但可以包含斜杠
uuid 接受 UUID 字符串

{注意一下}:唯一的URL 和重定向行为,这两条规则的不同之处在于是否使用尾部的斜杠,例如:

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'

projects 的 URL 是中规中矩的,尾部有一个斜杠,看起来就如同一个文件夹。 访问一个没有斜杠结尾的 URL 时 Flask 会自动进行重定向,帮你在尾部加上一个斜杠。

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

3 路由的逆用--URL 构建

暂且用这个名字吧,什么意思? 路由,是由客户端访问到服务器文件的路径。那么问题来了,能不能服务器自己访问自己的相关文件路径呢?答案:可以的。为啥这样做?简单,解耦,最最核心的是,模块化。无论你在那里,都可以通过URL 构建找到,想要的URL路径。

{注意一下}:对于初学者或者小项目用处不是特别大,但是,对于大工程,就会很有用。可以先看一个例子了解下。

from flask import Flask, escape, url_for

app = Flask(__name__)

@app.route('/')
def index():
    return 'index'

@app.route('/login')
def login():
    return 'login'

@app.route('/user/<username>')
def profile(username):
    return '{}\'s profile'.format(escape(username))

with app.test_request_context():
    print(url_for('index'))
    print(url_for('login'))
    print(url_for('login', next='/'))
    print(url_for('profile', username='John Doe'))

posted on 2020-12-07 16:04  dongdong51037788  阅读(76)  评论(0)    收藏  举报

导航