上一篇文章,介绍了如何用python和flask来开发web应用,是不是觉得用python做web应用很简单?

(1)URL如何传递参数?

(2)网页如何重定向?

阅读前,还是希望大家能告诉我,关于您和Python的熟练程度。

你的Python技能程度

网页如何重定向?

用户在访问某个页面的时候,我们希望他登录后才能访问该页面,如果此时他没有登录,系统就让浏览器由当前页面跳转到登录页面,这里就涉及页面重定向问题。所谓页面重定向,就是用户在打开某个页面的时候,我们期望页面跳转到另一个指定的页面,让用户完成某种操作或执行某个动作。

Flask中提供了重定向函数redirect(),该函数的功能就是跳转到指定的URL。下面在PyCharm中新建一名称为2-4的工程。

例2-4 Flask页面重定向:app.py


01 #endoding:utf-802 from flask import Flask,url_for,redirect #导入Flask和url_for及 redirect模块03 app = Flask(__name__) #Flask初始化04 @app.route('/') #定义路由05 def hello_world(): #定义视图函数06 print("首先访问了index()这个视图函数了!") #打印输出07 url1=url_for('user_login') #URL反转08 return redirect(url1) #网页重定位09 @app.route('/user_login') #定义路由10 def user_login(): #定位视图函数11 return "这是用户登录页面,请您登录,才能访问首页!" #返回值12 if __name__ == '__main__': 当模块被直接运行时,代码将被运行,当模块是被导入 时,代码不被执行13 app.run()

02行表示当模块被直接运行时,代码将被运行,当模块被导入时,代码不被执行;03行表示Flask初始化;04行定义路由;05行表示定义视图函数;06行表示打印输出;07行表示URL反转;08行表示网页重定位;09行表示定义路由;10行表示定位视图函数;11行表示返回值;12行表示当模块被直接运行时,代码将被运行,当模块被导入时,代码不被执行。

重定向是将原本的URL重新定向成为一个新的URL,可以实现页面的跳转。Flask中使用到了redirect()函数,需要使用from flask import redirect将其导入才能使用。这里输入地址访问的首先应该是index()这个视图函数,但是index()这个视图函数直接跳转到了user_login视图上,运行结果如图2.13所示。

图2.13 URL重定向后网页视图和控制台的输出

URL传递参数

Flask中如果要传递一个变量或者一个参数,可以通过表单和地址栏两种方式来传递。其中,通过浏览器地址栏URL方式传递/获取某个变量或参数使用得比较多。这样,我们可以使用相同的URL指定不同的参数,来访问不同的内容。

Flask通过URL传递参数,传递参数的语法是:'//'。需要注意两点:参数需要放在一对<>(尖括号)内;视图函数中需要设置同URL中相同的参数名。

下面在PyCharm中新建一名称为2-2的工程。

例2-2 URL传递参数:app.py


01 #encoding:utf-8 #指定编码02 from flask import Flask #导入Flask模块03 app = Flask(__name__) #Flask实例化04 @app.route('/') #定义路由05 def hello_world(): #定义视图函数06 return '这是url传参演示!' #返回值07 @app.route('/user/') #定义路由,传递的参数名是name,因此 需要在函数的形参中定义同名的参数08 return "接收到的名称为: %s" % name #返回值09 if __name__ == '__main__': # 如果某模块被直接运行,则其 __name__为'__main__'10 app.run(debug=True) #开启调试模式

02行表示导入Flask模块;03行表示Flask实例化;04行定义路由;05行定义视图函数;06行是返回值;07行定义路由;08行表示返回值;09、10行表示如果某模块被直接运行,则其__name__为'__main__',条件为真,就开启调试模式。

注意: 在Python中,所有没有缩进的代码都会被执行,__name__是Python的内建函数,指的是当前模块的名称,每个模块都有自己的__name__属性,但__name__的值是会变化的,如果某模块被直接运行,则其__name__为'__main__',条件为真,就可以执行app.run()方法,使得整个程序得以运行。当模块被导入时,代码不被运行。

如果07行代码中name没有指定数据类型,那么默认就是string数据类型。在浏览器的地址栏中输入 http://127.0.0.1:5000/user/zhangsan ,回车后便可以得到如图2.10所示的访问结果。

如果此时在浏览器地址栏输入的内容为 http://127.0.0.1:5000/USER/zhangsan ,回车后还可以得到如图2.8所示结果吗?结果显然是否定的。因为这里的user是区分大小写的。

在if__name__=='__main__':这行代码之上继续增加如下代码:


@app.route('/news/')def list_news(id):

return"接收到的id为%s"%id

在浏览器地址栏输入 http://127.0.0.1:5000/news/1 ,回车后便可以得到如图2.11所示结果。

图2.10 URL传字符串变量

图2.11 URL传递int型参数

如果在浏览器的地址栏输入 http://127.0.0.1:5000/news/1.1 ,回车后还可以得到正确的结果吗?结果显然也是否定的。定义成int数据类型的URL只能传递int类型,定义成float数据类型时,URL只能传递float类型,即定义的是什么数据类型,URL传递的参数就必须为对应的数据类型。

请点击获取Python开发Web书籍

python输出等腰三角形代码_酷呆了!Python开发web应用的一些中级技巧相关推荐

  1. python拼图游戏代码_教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  2. python输出图片代码_通过Python pyecharts输出保存图片代码实例

    安装pyecharts:pip install pyecharts 安装snapshot-selenium:pip install snapshot-selenium 安装ChromeDriver:下 ...

  3. python嵌入shell代码_小白进!嵌入式开发如何快速入门?

    文章字数3600   干货指数:☆ ☆ ☆ ☆ ☆ 留意没?其实智能手环.智能音箱.智能家电.共享单车.无人驾驶.....这些属于嵌入式系统的产品都早已融入了我们的日常生活. 嵌入式究竟是什么?嵌入式 ...

  4. python画飞机代码_这个可能打败Python的编程语言,正在征服科学界

    原标题:这个可能打败Python的编程语言,正在征服科学界 Julia 语言是近年来科学世界中出现的一匹黑马.物理学家 Lee Phillips 发表了一篇科普文章,介绍了这种科学计算语言的真正魅力所 ...

  5. python画美女代码_教你用python爬取网站美女图(附代码及教程)

    我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西.那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!! ...

  6. python 动态编译代码_使用PyQt(Python+Qt)+动态编译36行代码实现的计算器

    PyQt是基于跨平台的图形界面C++开发工具Qt加Python包装的一个GPL软件(GPL是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译),Qt基于 ...

  7. python秒表游戏代码_用20行Python代码实现2048小游戏,你会吗?

    前些天在b站上看到有个大佬用c写了一个2048小游戏,我便一下来了兴趣.心想着,我貌似也能用Python来整一波,话不多说,直接开搞. 2048的游戏规则: 2048游戏总共有16个格子,初始时会有两 ...

  8. python抢票代码_教你用Python动刷新抢12306火车票,附源码!

    用python另一个抢票神器,你get到了吗? 2017年时间飞逝,转眼间距离2018年春节还有不到1个月的时间,还在为抢不到火车票发愁吗?作为程序员的我们撸一个抢票软件可好? ... 难以想象的数据 ...

  9. python登录接口代码_(转载)Python 的 OAuth 登录接口 python-oauth2

    前言 python-oauth2 是 Python 语言的 OAuth 2 的实现,包括客户端和服务器端.该项目经过完整的测试. 它拥有一下特点: 100%单元测试覆盖. 完全去掉了DataStore ...

最新文章

  1. 使用 U 盘制作 Ubuntu 系统启动盘
  2. python数据库gui_从python数据库在gui上打印数据
  3. spine - unity3D(摘自博主softimagewht)
  4. 处理WCF异常的方式
  5. 通过selenium模拟登陆新浪微博爬取首页和评论
  6. 嵌入式linux学习
  7. 【OCR技术系列之三】大批量生成文字训练集
  8. 互联网金融爬虫怎么写-第二课 雪球网股票爬虫(正则表达式入门)
  9. Scratch(四):万圣节南瓜点灯
  10. qrc路径_Qt中的qrc文件
  11. Project2019入门到精通
  12. C++利用前序序列和中序序列构建二叉树
  13. openpyxl 取消合并单元格且填充
  14. ubuntu10.10 教育网 使用ipv6,亲测可用【经过再次验证与修正】
  15. 手机游戏连接计算机屏幕,手机怎么投屏到电脑?简单几个步骤就能实现,看电影玩游戏爽爆了...
  16. DAS、NAS、SAN、ISCSI的区别
  17. 计算机组装与维护毕业论文范文,计算机应用毕业论文 计算机组装与维护
  18. java中Date类之GMT、UTC
  19. Lonlife-ACM Round #7
  20. linux Ubuntu系统安装百度aip

热门文章

  1. B1230 [Usaco2008 Nov]lites 开关灯 线段树
  2. c++面向对象的程序设计
  3. codevs1688 求逆序对(权值线段树)
  4. Process类中与内存相关的属相不能更新!
  5. PayPal宣布退出虚拟货币组织Libra协会
  6. 报告显示:2018年北京人工智能相关产业达1500亿元
  7. (一)为什么你应该(从现在开始就)写博客
  8. python不定长参数怎么相加_python函数不定长参数使用方法解析
  9. toad mysql导入excel_Oracle 使用TOAD实现导入导出Excel数据
  10. synchronize与lock的区别