资讯专栏INFORMATION COLUMN

[译]Flask教程--重定向与错误

leap_frog / 1083人阅读

摘要:类有一个方法当我们调用它时它会返回一个响应对象并且按指定的状态码将用户重定向到另一个位置方法的原型如下在上面的函数中我们要重定向的位置状态码会在头中发送给浏览器默认为用这个参数来初始化响应对象下面是一些标准的状态码重定向的状态码默认是也就是

Flask类有一个redirect()方法. 当我们调用它时, 它会返回一个响应对象并且按指定的状态码将用户重定向到另一个位置.

redirect()方法的原型如下:

Flask.redirect(location, statuscode, response)

在上面的函数中,

location 我们要重定向的URL位置

statuscode 状态码会在http头中发送给浏览器, 默认为302

response 用这个参数来初始化响应对象

下面是一些标准的状态码:

HTTP_300_MULTIPLE_CHOICES

HTTP_301_MOVED_PERMANENTLY

HTTP_302_FOUND

HTTP_303_SEE_OTHER

HTTP_304_NOT_MODIFIED

HTTP_305_USE_PROXY

HTTP_306_RESERVED

HTTP_307_TEMPORARY_REDIRECT

重定向的状态码默认是302, 也就是已找到(found).
在下面的例子中, redirect()方法用于当登录失败的时候再次展示登录页面.

from flask import Flask, redirect, url_for, render_template, request
# Initialize the Flask application
app = Flask(__name__)

@app.route("/")
def index():
   return render_template("log_in.html")

@app.route("/login",methods = ["POST", "GET"])
def login():
   if request.method == "POST" and
   request.form["username"] == "admin" :
   return redirect(url_for("success"))
   return redirect(url_for("index"))

@app.route("/success")
def success():
   return "logged in successfully"
    
if __name__ == "__main__":
   app.run(debug = True)

Flask类有个abort()方法, 参数包括一个错误状态码.

Flask.abort(code)

400 错误请求

401 未授权请求

403 禁止

404 找不到资源

406 不可接受

415 未知媒体类型

429 太多请求

我们来对上面代码中的login()函数做一点修改. 如果我们在登录失败时不重新展示登录页, 而是展示"未授权"页面, 那么我们需要把重定向那行代码替换为abort(401).

from flask import Flask, redirect, url_for, render_template, request, abort
app = Flask(__name__)

@app.route("/")
def index():
   return render_template("log_in.html")

@app.route("/login",methods = ["POST", "GET"])
def login():
   if request.method == "POST":
      if request.form["username"] == "admin" :
         return redirect(url_for("success"))
      else:
         abort(401)
   else:
      return redirect(url_for("index"))

@app.route("/success")
def success():
   return "logged in successfully"

if __name__ == "__main__":
   app.run(debug = True)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40903.html

相关文章

  • []如何使用Flask开发一个增删改查的应用(part2)

    摘要:获取成为开发专家的技巧。我们可以在两个文本框输入笔记的标题和内容。在本教程中,我们将使用一个名为的工具。它是一个火狐浏览器的扩展,我们可以使用它管理数据库。安装,打开火狐浏览器,点击,然后点找到的文件夹图标并点击它。 showImg(https://cdn-images-1.medium.com/max/600/1*Ou6FFJJD3zhcIUU8wBZqIw.png); 教程译文首发...

    adam1q84 评论0 收藏0
  • [] Flask教程--会话

    摘要:跟不同会话数据存储于服务器上会话是指一个客户在一个服务上从登录到注销之间的时间段会话中需要存储的会话数据储存在服务器上的一个临时目录中每个会话都被分配了一个会话会话数据以的形式存储并且服务器会把会话数据进行加密为了进行这样的加密应用需要定义 跟Cookie不同, 会话(Session)数据存储于服务器上. 会话是指一个客户在一个web服务上从登录到注销之间的时间段. 会话中需要存储的会...

    microelec 评论0 收藏0
  • Flask Web Development —— Web表单(下)

    摘要:局部变量用于保存从表单中接收到的名字,初始化时变量为。在语句中,这个名字被赋值给局部变量且表单域的数据属性通过赋值为空字符串而被清除。示例重定向和用户会话在上一个版本中,局部变量用于保存用户在表单中输入的姓名。 4、视图函数中的表单操作 在新版本的hello.py中,index()视图函数渲染表单并接收其数据。示例4-4展示更新后的index()视图函数。 示例4-4. hello...

    yeooo 评论0 收藏0

发表评论

0条评论

leap_frog

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<