概述
上一篇文章,介绍了如何用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应用的一些中级技巧网页如何重定向?URL传递参数的全部内容,希望文章能够帮你解决python输出等腰三角形代码_酷呆了!Python开发web应用的一些中级技巧网页如何重定向?URL传递参数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复