首页 > Web开发 > 详细

第三章 URL与视图

时间:2019-11-09 23:38:42      阅读:107      评论:0      收藏:0      [点我收藏+]

 

页面跳转和重定向:

重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。
·永久性重定向:

http的状态码是301,多用于旧网址被废弃了要转到一个新的网址确保用户的访问,最经典的就是京东网站,你输入www.jingoong.con的时候,会被重定向到www.jd.com,因为jngdong.con这个网址已经被废弃了,被改成30.con,所以这种情况下应该用永久重定向。

·暂时性重定向:

http的状态码量302,表示页面的暂时性跳转。比如访问一个需要权限的网址,如果当前用户没有登示,应该重定问到登录页面,这种情况下,应该用暂时性重定问。

在flask中,重定向是通过flask.redirect(location,code=302)这个函数来实现的,1ocation表示需要重定向到的URL,应该配合之前讲的ur1_for()函效来使用,code表示采用哪个重定向,默认是302也即临时性重定向,可以修改成301来实现永久性重定向。

下面是京东的网站的永久重定向:

技术分享图片

 下面是淘宝【已买到宝贝】的临时性重定向:

技术分享图片

 案例代码如下:

flask有一个函数redirect可以重定向

from flask import Flask,request,redirect,url_for

app = Flask(__name__)

@app.route(/)
def hello_world():
    return Hello World!

@app.route(/login/)
def login():
    return 这是登录页面

@app.route(/profile/)
def profile():
    if request.args.get(name):
        return 个人中心页面
    else:
        return redirect(url_for(login))

 视图函数Response返回值详解

关于响应(Response):
视图函数的返回值会被自动转换为一个响应对象,F1ask的转换逻辅如下:

  1. ·如果返回的是一个合法的响应对象,则直接返回。
  2. ·如果返回的是一个字符串,那么Flask会重新创建一个werkzeug.wrapper3.Response对象,Response将该字符串作为主体,状态码为200,NTE类型为text/html,然后返回该Response对象。
  3. ·如果返回的是一个元组,元祖中的数据类型是(response,status,headers),status值会覆盖认的200状态码,headers可以是一个列表或者字典,作为额外的消息头。
  4. ·如果以上条件都不满足,Flask会假设返回值是一个合法的WSGIT应用程序,并通过Response.force_type(rv,request.environ)转换为一个请求对象。

以下将用例子来进行说明:
1.return-->Response

from flask import Flask,Response
#flask=verkzeug+sqlalchemy+jinja2
app=Flask(__name__)


@app.route(/)
def hello_world():
    # Response(‘Hello Worldl1‘,status=200,mimetype=‘/text/html‘)
    #下面的return语句其实是上面的Response的简化
    returnHello World!


@app.route(/1ist1/)
def list1():
    return[a,b]


if __name__ ==main:
    app.run(debug=True)

2.直接使用Response创建:

技术分享图片

 

 

 

 

 

 

 

 

 

第三章 URL与视图

原文:https://www.cnblogs.com/wqbin/p/11828224.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!