在py文件同级下 建立templates文件夹,再文件夹中编写html文件

1 向模版中传递参数:

  1. '''
  2. 1 向模板传送 参数
  3. '''
  4. @app.route('/')
  5. def index():
  6. name = 'Python'
  7. context = {
  8. 'name':'Python',
  9. 'age' : 18 ,
  10. 'num_list': [1,2,3,4,5,6,7,8,9,10]
  11. }
  12. return render_template('index.html',context=context,name=name )
  1. <body>
  2. hello world!
  3.  
  4. <br>
  5. <p> {{ context }} </p>
  6.  
  7. 姓名:{{ context['name'] }},{{ name }}
  8. <br>
  9. 年龄:{{ context['age'] }}
  10. <br>
  11. num_list:{{ context['num_list'] }}
  12. <br>
  13. {% for i in context['num_list'] %}
  14. <p>{{ i }}</p>
  15. {% endfor %}
  16.  
  17. </body>

2 反向路由:

  1. '''
  2. 2 反向路由
  3. url_for(视图函数名)) 能够返回视图的相对url
  4. 利用redirect( url_for(视图函数) ) 实现重定向
  5. '''
  6. @app.route('/redirect')
  7. def redi():
  8. redir = url_for('index',_external=True)
  9. print(redir)
  10. return redirect(redir)

3 过滤器、自定义过滤器:

  1. '''
  2. 3 过滤器:
  3.  
  4. safe 禁用转义 <p>{{ '<em>hello</em>' | safe }}</p>
  5. capitalize 首字母大写 <p>{{ 'hello' | capitalize }}</p>
  6. lower 小写 <p>{{ 'HELLO' | lower }}</p>
  7. upper 大写 <p>{{ 'hello' | upper }}</p>
  8. title 每个单词首字母大写 <p>{{ 'hello' | title }}</p>
  9. trim 去掉首位空格 <p>{{ ' hello world ' | trim }}</p>
  10. reverse 反转字符串 <p>{{ 'olleh' | reverse }}</p>
  11. format 格式化 <p>{{ '%s is %d' | format('name',17) }}</p>
  12. striptags 删掉html标签 <p>{{ '<em>hello</em>' | striptags }}</p>
  13.  
  14. 列表操作:
  15. first 取第一个元素 <p>{{ [1,2,3,4,5,6] | first }}</p>
  16. last 取最后一个元素 <p>{{ [1,2,3,4,5,6] | last }}</p>
  17. length 获取列表长度 <p>{{ [1,2,3,4,5,6] | length }}</p>
  18. sum 列表求和 <p>{{ [1,2,3,4,5,6] | sum }}</p>
  19. sort 列表排序 <p>{{ [6,2,3,1,5,4] | sort }}</p>
  20.  
  21. 语句块过滤:
  22. {% filter upper %}
  23. this is a Flask Jinja2 introduction
  24. {% endfilter %}
  25.  
  26. 自定义过滤器: 两种方式
  27. 1 app.add_template_filter(函数名,过滤器名)
  28. 2 @app.template_filter(过滤器名)
  29. '''
  30. @app.route('/filter')
  31. def filter():
  32. str = 'abCdeF hello woRld'
  33. li = [1,2,5,4,3,76,65,8,9]
  34. return render_template('filter.html',str=str,li=li)
  35. # 自定义过滤器
  36. def hahah(li):
  37. return str(li)+'hahaha'
  38. app.add_template_filter(hahah,'hahah')
  39.  
  40. @app.template_filter('heihei')
  41. def heihei(li):
  42. return str(li) + 'heihei'
  1. <body>
  2. {{ str }}
  3. <br>
  4. {{ str | upper }}
  5. <br>
  6. {{ str | lower }}
  7. <br>
  8. {{ str | capitalize }}
  9. <br>
  10. {{ str | title }}
  11. <br>
  12. {{ str | reverse }}
  13. <br>
  14. 列表操作:
  15. <br>
  16. {{ li }}
  17. <br>
  18. {{ li | length }}
  19. <br>
  20. {{ li | first }}
  21. <br>
  22. {{ li|last }}
  23. <br>
  24. {{ li | sort }}
  25.  
  26. <br>
  27. 块过滤:
  28. {% filter upper %}
  29. hello worldQ!
  30. {% endfilter %}
  31. <br>
  32.  
  33. 自定义过滤器:
  34. <br>
  35. {{ li | hahah }}
  36. <br>
  37. {{ li | heihei }}
  38.  
  39. </body>

4 web表单接收参数 wtf表单的使用:

  1. '''
  2. 3 web表单 WTForms
  3. '''
  4. # 获取常规表单数据的方法
  5. @app.route('/form',methods=['GET','POST'])
  6. def form():
  7. if request.method == 'POST':
  8. username = request.form['username']
  9. password = request.form['password']
  10. print(username , password)
  11. return render_template('form.html')
  12.  
  13. # 利用Flask的 WTF 实现表单
  14. # 配置 csrf_token 的生成项
  15. app.config['SECRET_KEY'] = 'python12'
  16. # 配置表单类
  17. class Form(FlaskForm):
  18. # user字段 text类型input框 校验输入数据
  19. user = StringField(validators=[DataRequired()])
  20. # equalto 检测 与ps2 内容是否一样
  21. ps = PasswordField(validators=[DataRequired(),EqualTo('ps2','err')])
  22. ps2=PasswordField(validators=[DataRequired()])
  23. submit = SubmitField()
  24.  
  25. # 利用Flask的 WTF 实现表单
  26. @app.route('/WTForm',methods=['GET','POST'])
  27. def wtForm():
  28. form = Form() # 拿到一个表单对象
  29. if form.validate_on_submit(): # 能够自动检验 提交的表单是否经过验证 返回True或者False
  30. # 获取表单数据
  31. user = form.user.data
  32. ps = form.ps.data
  33. ps2 = form.ps2.data
  34. print user,ps,ps2
  35. if request.method == "POST":
  36. # flask 操作后端
  37. flash(u'信息发生错误!')
  38.  
  39. print(form.validate_on_submit()) #能够检验 提交是否经过验证,返回True或者False
  40.  
  41. return render_template('form.html',form=form)
  1. <body>
  2. 普通表单:
  3. <br>
  4. <form method='post'>
  5. <input type="text" name="username" placeholder='Username'>
  6. <br>
  7. <input type="password" name="password" placeholder='password'>
  8. <br>
  9. <input type="submit">
  10. </form>
  11. <hr>
  12. WTF表单:
  13. <form method="post">
  14. {{ form.csrf_token() }}
  15. {{ form.user.label }}:{{ form.user }}
  16. <br>
  17. {{ form.ps.label }}:{{ form.ps }}
  18. <br>
  19. {{ form.ps2.label }}:{{ form.ps2 }}
  20. <br>
  21. {{ form.submit }}
  22. <br>
  23. {% for info in get_flashed_messages() %}
  24. {{ info }}<br>
  25. {% endfor %}
  26. </form>
  27.  
  28. </body>

4 宏的编写与使用

  1. '''
  2. 4 宏 继承 包含 模板的使用
  3. '''
  4. @app.route('/macro')
  5. def macro():
  6. return render_template('macro.html')
  1. <body>
  2. 定义 宏 和调用 宏
  3. <br>
  4. {# 定义宏 #}
  5. {% macro input(type,value,size) %}
  6. <input type="{{ type }}" name="" value="{{ value }}" size="{{ size }}">
  7. {% endmacro %}
  8.  
  9. {# 调用宏 #}
  10. {{ input('text','登陆','60') }}
  11. <br>
  12. {{ input('password','注册','20') }}
  13.  
  14. <br>
  15.  
  16. 引用外部宏
  17. <br>
  18. {% import 'macros.html' as f %}
  19. {{ f.fun() }}
  20.  
  21. </body>
  1. 外部宏:macros.html 文件:
    1 {% macro fun() %}
  2. <input type="text" name="username" placeholde="Username">
  3. <br>
  4. <input type="password" name="password" placeholde="Password">
  5. <br>
  6. <input type="submit">
  7. <br>
  8. {% endmacro %}

python flask框架 tempates 模版的使用的更多相关文章

  1. Linux ubantu中安装虚拟/使用环境virtualenv以及python flask框架

    今天学习了python flask框架的安装过程以及使用案例,感觉网上讲的东西都没有从我们这种初学者的角度去考虑(哈哈),最后还是奉上心得: 1.安装virtualenv $ sudo apt-get ...

  2. python flask框架学习——开启debug模式

    学习自:知了课堂Python Flask框架——全栈开发 1.flask的几种debug模式的方法 # 1.app.run 传参debug=true app.run(debug=True) #2 设置 ...

  3. python flask框架学习(二)——第一个flask程序

    第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...

  4. python flask框架学习(一)——准备工作和环境配置与安装

    Flask装备: 学习自:知了课堂Python Flask框架——全栈开发 1.Python版本:3.6 2.Pycharm软件: 3.安装虚拟环境: (1)安装virtualenv: pip ins ...

  5. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (II)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架 II第二部 0. 本系列教程 1. 登录功能准备 a.python中操控mysql b. 安装数据库 c.安装mys ...

  6. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (I)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架(I 第一部) 0. 本系列教程 1. 准备 a.python b. flask c. flask 环境安装 d. f ...

  7. Python Flask框架路由简单实现

    Python Flask框架路由的简单实现 也许你听说过Flask框架.也许你也使用过,也使用的非常好.但是当你在浏览器上输入一串路由地址,跳转至你所写的页面,在Flask中是怎样实现的,你是否感到好 ...

  8. Python——Flask框架——程序的结构

    一.项目结构 |-flasky |-app Flask程序一般都保存在这里 |-templates/ |-static/ |main/ |-__init__.py |-errors.py |-form ...

  9. python Flask框架mysql数据库配置

    我是一个没有笔记习惯的低级程序员,但是我还是喜欢编程,从小学就开始跟着玩电脑,对抓鸡,ddos,跳板刷钻开始了自己的IT 旅程,之后学习了各种语言,但是可惜都不没有达到精通,都是略懂一二,现在想把Py ...

随机推荐

  1. WordPress后台添加友情链接管理功能

    其实很早之前WordPress是有这个功能的,但是伴随着wordpress的经常升级和主题的升级以及更换,有时候后台会发现没有链接管理的入口,不过还是可以通过代码还原这个功能. 将以下代码添加到您当前 ...

  2. Python+ Selenium自动化登录腾讯QQ邮箱实例

    学习了Python语言一段时间后,在公司的项目里也使用到了python来写测试脚本,一些重复的操作都使用脚本来处理了.大大的提高工作效率,减少了一些手工重复的操作. 以下是使用unittest框架写的 ...

  3. CMake 条件判断

    CMake简介 CMake 是做什么的? CMake是一套类似于automake的跨平台辅助项目编译的工具. 我觉得语法更加简单易用. CMake的工作流程 CMake处理顶级目录的CMakeList ...

  4. generator生成器iterator遍历器和yield

    generator方法()返回一个iterator 使用generator时永远先去调用generator()方法 for of对iterator的调用过程(babel参照) 1,_iterator. ...

  5. 笔记:Maven 插件及配置详解

    插件使用配置 用户能够自己选择将某个插件目标绑定到生命周期的某个阶段上,例如创建项目的源码JAR包,内置的插件绑定关系并没有涉及这个任务,mavent-source-plugin 可以帮助我们完成该任 ...

  6. Adriod与HTML+JS的交互

    本篇主要实现的功能点: Android 调用HTML中的javascript脚本 HTML中的javascript脚本调用Android本地代码 Android 调用HTML中的javascript脚 ...

  7. freeMark的入门教程

    1.FreeMarker支持如下转义字符: \";双引号(u0022) \';单引号(u0027) \\;反斜杠(u005C) \n;换行(u000A) \r;回车(u000D) \t;Ta ...

  8. MSIL实用指南-生成构造函数

    本篇讲解生成构造函数的一些知识,包括创建实例构造函数.静态构造函数.调用父类构造函数. 生成构造函数的方法生成构造函数的方法是TypeBuilder.DefineConstructor(MethodA ...

  9. JAVA连接SAP

    1.首先需要在SAP事务码SE37中新建一个可以被远程调用的RFC 事务码:SE37 新建一个函数组:输入事务码SE37回车后,来到函数构建器屏幕,到上面一排菜单栏:转到 -> 函数组 -> ...

  10. u3d材质Tiling和Offset意义以及TRANSFORM_TEX

    1. TRANSFORM_TEX主要作用是拿顶点的uv去和材质球的tiling和offset作运算, 确保材质球里的缩放和偏移设置是正确的 下面这两个函数是等价的.o.uv =   TRANSFORM ...