可以使用如下代码创建一个Python模板,包含两个函数:一个计算长方形面积的函数,一个计算长方形周长的函数。
创新互联是一家专业提供沂水企业网站建设,专注与成都网站制作、成都网站设计、H5响应式网站、小程序制作等业务。10年已为沂水众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
# 定义一个函数,用于计算长方形的面积
def rectangle_area(length, width):
return length * width
# 定义一个函数,用于计算长方形的周长
def rectangle_perimeter(length, width):
return 2 * (length + width)
在这段代码中,“rectangle_area”函数用于计算长方形的面积,“rectangle_perimeter”函数用于计算长方形的周长。两个函数都接收两个参数:长方形的长和宽。
要使用这两个函数,可以使用如下代码:
# 输入长方形的长和宽
length = float(input('请输入长方形的长:'))
width = float(
摘要: Flask , 视图 , 视图函数 , 类视图 , 方法视图 , 装饰器 , 蓝图
在Flask中 路由 是指用户请求的 URL 与 视图函数 之间的 映射 ,处理URL和函数之间关系的程序称为路由。Flask根据HTTP请求的URL在路由表中匹配预定义的URL找到对应的视图函数。将视图函数的执行结果返回给服务器。
Flask中默认使用 @app.route 装饰器将视图函数和URL绑定,装饰器是一种接受函数的函数,返回新的函数。
使用装饰器将视图函数page和url '/'关系绑定带 app.url_map 属性上,打印app.url_map的结果如下,有两条url规则,分别是根目录下的URL规则和static目录下的URL规则
可以给装饰器增加 endpoint 参数给 url命名 ,一旦使用了endpoint参数 url_for 反转就不能使用视图函数名了而要使用定义的url名。
url_for('index')的输出是字符串格式url的内容"/"
也可以不使用装饰器,使用 add_url_rule 将视图函数和url绑定,装饰器 @app.route 实际是调用的 add_url_rule 方法
视图函数也可以结合类来实现,类视图的好处是支持 继承 ,可以将共性的东西放到父类中,类视图需要使用 app.add_url_rule() 来进行注册,类视图分为 标准类视图 和 基于调度方法的类视图
标准类视图有标准的写法
使用类视图,在父类中定义一个属性,在子类中完成各自的业务逻辑,同时都继承父类中的这一个属性
分别定义三个子类的模板
查看结果,三个url的返回除了三个模板各自的内容外都需要输出父类的ads属性
如果同一个视图函数需要根据 不同的请求方式 进行不一样的逻辑处理,需要在视图函数内部进行判断,可以使用 方法类视图 实现,使用类继承 flask.views.MethodView ,定义和请求方式 同名的小写方法 来完成了逻辑处理。
编辑一个页面直接访问是输出用户名密码页面,提交表单后是密码正确与否的提示。
在html中定义 form 标签action属性关联url名
如果不用方法视图实现需要在普通视图内部调用 request.method 判断是否为 GET , POST 进行判断
装饰器的本质是一个Python函数, 接受一个函数 , 返回一个函数 ,目的是让一个函数获得 其他额外的功能 。
假设一个场景访问新闻详情页又一个函数实现,但是之前必须先登录,登录由另一个函数实现,此时需要将访问新闻函数传递给登录函数返回一个新的函数作为整体的逻辑实现,这个给登录函数增加新功能浏览网页的过程就是装饰器。
控制台输出,new_func()执行了新函数,基础函数user_login执行了新加入的功能,新函数真实的函数名还是inner
如果使用装饰器魔法符号实现,此时直接调用被装饰的函数即可实现带有新功能的基础函数,函数作为参数传入的过程已经自动实现
在基础函数和要包装的函数上都支持传递参数
查看 app.route() 的源码内部也是将视图函数包装,在原函数执行之前调用 add_url_rule 绑定url,endpoint和视图函数的关系,再返回原函数实现业务逻辑
蓝图的目的是实现 各个模块的视图函数写在不同的py文件中 ,在主视图中导入分路由视图的模块,并注册蓝图对象, 降低各个功能模块的耦合度 ,使用 flask.Blueprint 定义蓝图, app.register_blueprint 注册蓝图。
实现主页,详情页,对比页三个页面,在主页中导入两个其他功能页,先编写两个功能页的蓝图detail.py和compare.py
使用 app = Blueprint('detail', __name__) 定义蓝图对象, detail 是蓝图名,蓝图名不能重复。再编写主视图main.py,在主视图中注册之前的蓝图,其他视图函数的名字不能和蓝图名一致
查看效果
如果在蓝图的py脚本中调用了 url_for ,需要把蓝图的name(就是 name 之前的)也加入作为前缀,如下
1、打开sublime text 3,新建一个PY文件。
2、import os,因为涉及到系统文件路径的原因,我们这里先导入系统模块。
3、html = open("E:\\Download\\new\\new.html", "w"),创建变量,然后设置文件名字,注意用w写方式来进行,这样就会创建一个新的HTML文件。
4、html.write("!DOCtype HTML\
\nheadtitle新的网页/title/head\
\nbodyh1大家好啊/h1/body")
这个时候就可以写入相关的HTML代码了。
5、这个时候可以双击打开HTML文件,那么就可以看到书写的网页了。
6、然后加上html.close(),记得加上这行代码来关闭,不然会占用很多内存,这样就完成了。