Redirección y redirección de la página La
redirección se divide en redirección permanente y redirección temporal. La operación reflejada en la página es que el navegador saltará automáticamente de una página a otra. Por ejemplo, el usuario visitó una página que requiere permiso, pero el usuario no está conectado actualmente, por lo que debemos redirigirlo a la página de inicio de sesión.
• Redirección permanente: el código de estado de http es 301, se utiliza principalmente para que se abandone la URL anterior. Vaya a una nueva URL para garantizar la visita del usuario, la más clásica es el sitio web de Jingdong, cuando ingrese www.jingdong.com, Redirigido a www.jd.com, debido a que la URL jingdong.com ha sido abandonada y cambiada a jd.com, por lo que se debe utilizar la redirección permanente en este caso.
• Redirección temporal: el código de estado de http es 302, lo que indica un salto temporal a la página. Por ejemplo, para acceder a una URL que requiere permiso, si el usuario actual no ha iniciado sesión, debe ser redirigido a la página de inicio de sesión. En este caso, se debe utilizar una redirección temporal.
En el matraz, la redirección se logra a través de la función flask.redirect (ubicación, código = 302). La ubicación indica la URL a la que se debe redirigir. Debe usarse junto con la función url_for () descrita anteriormente. El código indica qué pesado La orientación, el valor predeterminado es 302, que es una redirección temporal, se puede modificar a 301 para lograr una redirección permanente
from flask import Flask,url_for,request,redirect
app = Flask(__name__)
@app.route("/")
def index():
#
# /article/2/ 只传一个aid
# 根据函数的名字进行反转 得到函数对应的路由 重定向
# /article/2/?page=2 aid=2,page=2 把不存在的数page=2当参数了
# /article/2/?page=2&t=123 传多个不存在参数 后面用&连接
print(url_for("article_list",aid=2,page=2,t=123))
return "hello world"
# http://127.0.0.1:5000/article/2/ 如何通过函数名得到url地址?
@app.route("/article/<aid>/")
def article_list(aid):
return "article list {}".format(aid)
@app.route("/detail/<did>/")
def article_detail(did):
# print(url_for("index"))
# /?next=%2F
print(url_for("index",next="/"))
# / => %2F
return "article detail {}".format(did)
# 默认都是接收GET请求 想要接收POST请求 需要怎么办?定义methods
# @app.route("/login/",methods=["POST","GET"])
# def login():
# get 参数直接在url中 一般都是获取数据
# post 参数没有直接体现在URL地址中 一般都是提交表单数据
# print(type(request.args))
# print(request.args.get('username'))
# 接收POST请求发送的参数如何接收
# print(request.form.get("name"))
# return "login"
# 页面重定向 登录
@app.route("/signin/")
def login():
return "login"
@app.route("/profile/")
def profile():
name = request.args.get("name")
if name:
return name
else:
# 重定向到登陆页面
# return redirect(url_for("login"),code=301)
return redirect(url_for("login"),code=301)
if __name__ == '__main__':
app.run(debug=True)