网站首页 > 技术教程 正文
上一篇文章,介绍了如何用python和flask来开发web应用,是不是觉得用python做web应用很简单?
(1)URL如何传递参数?
(2)网页如何重定向?
阅读前,还是希望大家能告诉我,关于您和Python的熟练程度。
你的Python技能程度
网页如何重定向?
用户在访问某个页面的时候,我们希望他登录后才能访问该页面,如果此时他没有登录,系统就让浏览器由当前页面跳转到登录页面,这里就涉及页面重定向问题。所谓页面重定向,就是用户在打开某个页面的时候,我们期望页面跳转到另一个指定的页面,让用户完成某种操作或执行某个动作。
Flask中提供了重定向函数redirect(),该函数的功能就是跳转到指定的URL。下面在PyCharm中新建一名称为2-4的工程。
例2-4 Flask页面重定向:app.py
01 #endoding:utf-8 02 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所示。
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所示结果。
如果在浏览器的地址栏输入 http://127.0.0.1:5000/news/1.1 ,回车后还可以得到正确的结果吗?结果显然也是否定的。定义成int数据类型的URL只能传递int类型,定义成float数据类型时,URL只能传递float类型,即定义的是什么数据类型,URL传递的参数就必须为对应的数据类型。
请点击获取Python开发Web书籍
猜你喜欢
- 2024-10-17 Web开发程序应用 web应用开发用什么软件
- 2024-10-17 混合应用开发的又一个选择,支持三大主流Web框架——Onsen UI
- 2024-10-17 web端开发增强现实应用 web应用与开发 功能实现
- 2024-10-17 Java Web应用开发工程师——学习路线
- 2024-10-17 如何用Web前端技术就能开发出桌面应用程序?
- 2024-10-17 用 Angular 开发 Web 应用(Part 2)
- 2024-10-17 用WEB技术栈开发NATIVE应用:WEEX 前端SDK原理详解
- 2024-10-17 使用 Rust Actix 快速开发高性能的Web应用
- 2024-10-17 手把手带你使用Flutter开发web应用程序
- 2024-10-17 中文编程也可以开发网站:易语言E2EE互联网服务框架初识
你 发表评论:
欢迎- 05-05从virsh当中学习QEMU/KVM启动命令
- 05-05Win10 BCD文件损坏怎么修复?(bcd文件损坏win7)
- 05-05亚马逊春节假期期间的店铺管理设置
- 05-051分钟总结常用k8s常用诊断教程(k8s常见故障)
- 05-05VisiPics重复图片查找软件中文汉化教程
- 05-05微服务的发布实现方式1灰度实现(微服务实现原理)
- 05-05轻松掌握Java多线程 - 第二章:线程的生命周期
- 05-05德拉诺之王邪DK报告:PVE向小测试及分析
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)