返回顶部
首页 > 资讯 > 精选 >使用Django和Flask怎么获取访问来源
  • 758
分享到

使用Django和Flask怎么获取访问来源

2023-06-14 20:06:29 758人浏览 安东尼
摘要

使用Django和flask怎么获取访问来源?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Flaskrequest.referrer  # 来

使用Djangoflask怎么获取访问来源?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Flask

request.referrer  # 来路request.headers.get('User-Agent')  # 请求头

DjanGo

request.META['Http_REFERER']  # 来路request.META.get("HTTP_USER_AGENT")  # 请求头

补充:flask 重定向到上一个页面,referrer、next参数 --

>重定向会上一个页面

在某些场景下,我们需要在用户访问某个url后重定向会上一个页面,比如用户点击某个需要登录才能访问的连接,这时程序会重定向到登录页面,当用户登录后比较合理的行为是重定向到用户登录前浏览的页面。

下面的例中,在foo和bar视图中生成连接,链接过去后,没有重定向会上一个页面

@app.route('/foo')def foo():return '<h2>Foo page </h2><a href="%s" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >Do something</a>' %url_for('do_something')@app.route('/bar')def bar():return '<h2>Bar page</h2><a href="%s" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >Do something </a>' % url_for('do_something')@app.route('/do_something')def do_something():return redirect(url_for('hello'))@app.route('/hello')def hello():name = request.args.get('name')if name is None:name = request.cookies.get('name','xiaxiaoxu')#从cookie中获取name值response = '<h2>Hello, %s</h2>' % namereturn responseif __name__ == '__main__':app.run(debug = True)

结果:

访问127.0.0.1:5000/foo或者127.0.0.1:5000/bar后,页面出现连接,点击链接后,进入hello页面,之后停留在了hello页面

使用Django和Flask怎么获取访问来源

点击链接后重定向到了hello页面

使用Django和Flask怎么获取访问来源

我们的目的是在链接后,返回原来的页面

重定向会上一个页面,关键是获取上一个页面的URL。

获取上一个页面的URL有两种方法:

HTTP referrer

HTTP referrer是一个用来记录请求发源地址的HTTP首部字段(HTTP_REFERER),即访问来源。当用户在某个站点点击链接,浏览器想新链接所在的服务器发起请求,请求的数据中包含的HTTP_REFERER字段记录了用户所在的原站点URL。

在flask中,referer的值可以通过请求对象的referrer属性获取,即request.referrer

修改do_something视图函数:

@app.route('/do_something')def do_something():return redirect(request.referrer)

在bar页面上再次点击链接

使用Django和Flask怎么获取访问来源

有的时候,referrer字段可能是空值,比如用户直接在浏览器地址栏输入URL或者因为防火墙或者浏览器设置自动清除或修改referer字段,我们需要添加一个备选项:

return redirect(request.referrer or url_for('hello'))

查询参数next

除了自动从referrer获取,另一种更常见的方式是在URL中手动加入包含当前页面URL的查询参数,这个查询参数一般命名为next

在bar视图中的链接do_something对应的视图添加next参数(在/do_someghing后加参数)

def bar():#print dir(request)print "request.full_path:",request.full_path#print "request.url:",request.urlreturn '<h2>Bar page</h2><a href="%s" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >Do something and redirect </a>' % url_for('do_something', next = request.full_path)@app.route('/do_something')def do_something():return redirect(request.args.get('next'))

使用Django和Flask怎么获取访问来源

为了避免next参数为空的情况,也可以加备选项,如果为空就重定向到hello视图

return redirect(request.args.get('next', url_for('hello')))

为了覆盖更全面,可以将查询参数next和referrer两种方式结合起来使用:

先获取next参数,如果为空就尝试获取referer,如果仍然为空,就重定向到默认的hello视图

因为在不同视图执行这部分操作的代码相同,我们可以创建一个通用的函数redirect_back()函数

在do_something视图中调用这个函数

@app.route('/bar')def bar():print "request.full_path:",request.full_pathreturn '<h2>Bar page</h2><a href="%s" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >Do something and redirect </a>' % url_for('do_something', next = request.full_path)def redirect_back(default = 'hello',**kwargs):for target in request.args.get('next'),request.referrer:if target:return redirect(target)return redirect(url_for(default,**kwargs))@app.route('/do_something_and_redirect')def do_something():return redirect_back()if __name__ == '__main__':app.run(debug = True)

使用Django和Flask怎么获取访问来源

关于使用Django和Flask怎么获取访问来源问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: 使用Django和Flask怎么获取访问来源

本文链接: https://lsjlt.com/news/274482.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用Django和Flask怎么获取访问来源
    使用Django和Flask怎么获取访问来源?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Flaskrequest.referrer  # 来...
    99+
    2023-06-14
  • 使用Django和Flask获取访问来源referrer
    Flask request.referrer # 来路 request.headers.get('User-Agent') # 请求头 Django request.M...
    99+
    2024-04-02
  • 使用java怎么获取jvm源码
    这篇文章给大家介绍使用java怎么获取jvm源码,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。一、JV...
    99+
    2023-06-14
  • 使用Flask和Django中解决跨域请求问题
    Flask解决跨域 1、下载flask_cors包 pip install flask-cors 2、使用flask_cors的CORS 代码示例 from flask_c...
    99+
    2024-04-02
  • 怎么使用AJAX获取Django后端数据
    这篇文章主要介绍了怎么使用AJAX获取Django后端数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用Django服务网页时,只要用户执行导致页面更改的操作,即使该更改...
    99+
    2023-06-15
  • PHP 使用curl_init()函数 访问API 获取数据
    curl_init() 是 PHP 中用于初始化 cURL(Client URL)会话的函数。cURL 是一个功能强大的库,用于与各种服务进行网络通信,包括访问 API、发送 HTTP 请求等。 以下是使用 curl_init() 访问 A...
    99+
    2023-09-02
    php 开发语言
  • 怎么在Linux服务器中使用TCPCopy获取用户访问流量
    本篇文章给大家分享的是有关怎么在Linux服务器中使用TCPCopy获取用户访问流量,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 tcpcopy可以当做一种压力测试...
    99+
    2023-06-12
  • HTML5怎么获取网站访问者的位置
    这篇文章主要介绍“HTML5怎么获取网站访问者的位置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“HTML5怎么获取网站访问者的位置”文章能帮助大家解决问题。 寻...
    99+
    2024-04-02
  • 怎么获取小程序访问分析数据
    本文小编为大家详细介绍“怎么获取小程序访问分析数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么获取小程序访问分析数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。访问分析获取小程序访问分析数据,数据说明参...
    99+
    2023-06-26
  • Python Web框架Django怎么使用jwt获取用户信息
    这篇文章主要介绍“Python Web框架Django怎么使用jwt获取用户信息”,在日常操作中,相信很多人在Python Web框架Django怎么使用jwt获取用户信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-01
  • php中怎么通过获取referer防非法访问
    php中怎么通过获取referer防非法访问,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。面是我下载页面down.php 的php代码 现在我发现,用迅雷,谷歌浏览器...
    99+
    2023-06-20
  • 怎么获取和使用github激活码
    Github是一个全球最大的代码托管平台,它托管着全球各地的数以亿计的开源代码和私有代码,是程序员和开发者共同的网络家园。对于刚接触Github的新手来说,如何获取Github的激活码是一个必须要掌握的问题。一、Github激活码是什么?G...
    99+
    2023-10-22
  • CentOS下怎么使用Fail2ban来禁止指定IP访问
    这篇文章主要讲解了“CentOS下怎么使用Fail2ban来禁止指定IP访问”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CentOS下怎么使用Fail2ban来禁止指定IP访问”吧!安装和...
    99+
    2023-06-10
  • 怎么使用nginx代理实现静态资源访问
    今天小编给大家分享一下怎么使用nginx代理实现静态资源访问的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一. 目标:为了通...
    99+
    2023-07-02
  • html中怎么使用js来获取本地系统时间
    这篇文章主要介绍“html中怎么使用js来获取本地系统时间”,在日常操作中,相信很多人在html中怎么使用js来获取本地系统时间问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • Python Flask和JinJa2语法怎么使用
    这篇文章主要介绍“Python Flask和JinJa2语法怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python Flask和JinJa2语法怎么使用”文章能帮助大...
    99+
    2023-07-06
  • 使用Okhttp3怎么获取Cookie
    本篇文章给大家分享的是有关使用Okhttp3怎么获取Cookie,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。2.1 简介Okhttp是一个快速、高效的网络请求库。详情可以查阅...
    99+
    2023-05-30
    okhttp3 cookie
  • springboot怎么获取访问接口的请求的IP地址
    这篇文章主要讲解了“springboot怎么获取访问接口的请求的IP地址”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springboot怎么获取访问接口的请求的IP地址”吧!工具类:imp...
    99+
    2023-06-20
  • Django使用问题怎么解决
    本篇内容介绍了“Django使用问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Django R...
    99+
    2024-04-02
  • 使用golang获取linux上文件的访问/创建/修改时间
    在linux上想获取文件的元信息,我们需要使用系统调用lstat或者stat。 在golang的os包里已经把stat封装成了Stat函数,使用它比使用syscall要方便不少。 这是os.Stat的原型: func ...
    99+
    2022-06-04
    golang linux linux 文件访问 linux 文件创建 linux 文件修改时间
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作