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) 收藏 举报
浙公网安备 33010602011771号