一、route()装饰器将URL绑定到特定函数
@app.route('/')
def index():
return 'Index'
@app.route('/hello')
def hello():
return 'Hello, World'
二、变量规则<variable_name>或<converter:variable_name>
@app.route('/user/<user_id>')
def user(user_id):
return f'user_id is{user_id}'
from markupsafe import escape
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return f'Post {post_id}'
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
# show the subpath after /path/
return f'Subpath {escape(subpath)}'
转换器类型:
三、唯一的URLs / 重定向行为
以下两条规则在使用斜杠时有所不同。
@app.route('/projects/')
def projects():
return 'projects'
@app.route('/about')
def about():
return 'about us'
端点的规范 URL projects有一个尾部斜杠。它类似于文件系统中的文件夹。如果您访问的 URL 没有尾部斜杠 ( /projects),Flask 会将您重定向到带有尾部斜杠 ( ) 的规范 URL /projects/。
端点的规范 URLabout没有尾部斜杠。它类似于文件的路径名。使用尾部斜杠 ( /about/) 访问 URL 会产生 404“未找到”错误。这有助于使这些资源的 URL 保持唯一性,从而帮助搜索引擎避免将同一页面编入两次索引。
四、url_for:url 构建
1.构建特定函数的 URL:
它接受函数的名称作为其第一个参数和任意数量的关键字参数,每个关键字参数对应于 URL 规则的可变部分。未知的可变部分作为查询参数附加到 URL
from flask import url_for
@app.route('/')
def index():
return 'index'
@app.route('/login')
def login():
return 'login'
@app.route('/user/<username>')
def profile(username):
return f'{username}\'s profile'
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'))
2.访问静态文件(CSS / JavaScript 等)。 只要在你的包中或是模块的所在目录中创建一个名为 static 的文件夹,在应用中使用 /static 即可访问。
<img class="side-question-avatar" src="{{ url_for("static",filename="images/avtar.jpeg") }}" alt="">
<div class="question-title"><a href={{ url_for('qa.question',question_id=article.id) }}>{{ article.title }}</a></div>
return render_template("register.html")
3.重定向使用:redirect
return redirect(url_for("user.login"))