11.(http)重定向

重定向很简单,只需要一个redirect()函数即可解决,里面可以直接放链接,也可以用url_for反转

【重点是重定向到上一个页面】

(思路)  
1. 获取上一个页面的url(通过request.reffer或者next参数)
2. 获取到之后还得验证这个url
3. 将其编写为一个函数,以便之后重复用
(代码)
from flask import request,redirect,url_for
from urllib.parse import urlparse,urljoin

# 从url里获取查询字符串next的值
# next = request.args.get("next")
# 重定向到上一个页面函数

def redirect_back(next, **kwargs):
# 遍历这两个url 
    for target in (next,request.referrer):
        if not target:
            continue
        if target:
#获取主机地址(本站根域名)并解析出来
            a_url = urlparse(request.host_url)
#将目标url加上主机地址 即转换为绝对地址,如果目标url已经是绝对地址,则以目标url为准
            b_url = urlparse(urljoin(request.host_url,target))
#验证转换后的模板url是否属于这两个协议,并且他们的根域名是否相等(重点)
            if b_url.scheme in ["http","https"] and a_url.netloc==b_url.netloc:
                return redirect(target)
            return redirect(url_for("blog.index"))
        return redirect(url_for("blog.index"))                 

【注意】一般是

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,047评论 1 45
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,124评论 0 3
  • 让我默默地守护在你的身后, 看着你的欢乐,分担着你的忧愁! 让我无声地与你并肩, 在你身边撑起一把无形的伞。 让我...
    明亮a阅读 2,750评论 5 22
  • 男人有一双明亮的眼, 怀一颗赤诚的心。 男人遇到了女孩。 女孩有一双水汪汪的大眼睛, 男人喜欢看。 女孩有时娇滴滴...
    婉婉类卿阅读 1,891评论 0 0