zoukankan      html  css  js  c++  java
  • Flask框架基础(1)

     

    1、FLask框架

    Flask是由python实现的一个web微框架,让我们可以使用Python语言快速实现一个网站或Web服务。

    1)安装flask:pip install flask

    2)框架的目录结构

    3)hello word

     1 from flask import Flask
     2  #  这里首先引入Flask类
     3   
     4   app = Flask(__name__)
     5   #  给这个类创建一个实例,name代表这个模块的名字
     6   
     7   
     8   @app.route('/') # 用route()这个修饰器定义一个路由,告诉flask如何访问该函数
     9   def index():
    10      return 'hello world'
    11  
    12  
    13  if __name__ == '__main__':
    14      app.debug = True    # 设置调试模式,生产模式的时候要关掉debug
    15      app.run()   # 用run()函数使这个应用在服务器上运行起来
    16 
    17  # 这是flask框架制作的一个最小的应用。
    18  # 使用python运行后访问localhost:500就能看到网面显示hello world

    2、jinji2模板引擎

    2.1模板基本使用(sample)

     1   from flask import Flask     # 这里首先引入Flask类
     2   from flask import render_template
     3   
     4   app = Flask(__name__)
     5   #  给这个类创建一个实例,name代表这个模块的名字
     6   
     7   
     8   @app.route('/hello/<name>')  # 用route()这个修饰器定义一个路由,告诉flask如何访问该函数
     9   def index(name=None):
    10      return render_template('hello.html', name=name)
    11      # 第一个参数”hello.html”指向你想渲染的模板名称
    12      # 第二个参数”name”是你要传到模板去的变量,变量可以传多个。
    13      # 这个模板”hello.html”一定要在”templates”目录下
    14  
    15   if __name__ == '__main__':
    16      app.run(host='0.0.0.0' , debug=True)   # 用run()函数使这个应用在服务器上运行起来
    17  
    18  # 这段代码”index()”函数并不是直接返回字符串,而是调用了”render_template()”方法来渲染模板。
    19  # 使用python运行后访问”http://localhost:5000/hello/man”就能看到网面显示hello man!
     1  1 <!DOCTYPE html>
     2  2 <html lang="en">
     3  3 <head>
     4  4     <meta charset="UTF-8">
     5  5     <title>Hello Sample</title>
     6  6     {% if name %}
     7  7         <h1>Hello {{ name }}!</h1>
     8  8     {% else %}
     9  9         <h1>Hello love!</h1>
    10 10     {% endif %}
    11 11 
    12 14 </head>
    13 15 <body>
    14 16 
    15 17 </body>
    16 18 </html>

    2.2 模板基本使用(html文件中使用)

      1)变量代码块的基本规则

      • {##}为注释
      • 获取指定列表中的值 : 法① {{列表名.index}}  法② {{列表名[index]}}
      • 获取指定字典中的值 : 法① {{字典名.键}}       法② {{字典名[’键‘]}}

      2)控制代码块 

      • 用{%   %}定义的控制代码块
      • For循环及If判断 

      3)常见过滤器使用

      • 格式:{{变量名 | 过滤器}}
      • 常见过滤器
    1 """
    2 列表操作:
    3 取第一个元素:first
    4 取最后一个元素:last
    5 获取长度:length
    6 求和:sum
    7 排序:sort
    8 """
     1 """
     2 字符串操作:
     3 禁用转义:safe
     4 首字母变大写,其他变小写:capitalize
     5 变小写:lower
     6 变大写:upper
     7 把值中的每个单词的首字母变大写:title
     8 反转:reverse
     9 格式化输出:format   <p>{{'%s is %d' | format('name',17}}</p>
    10 渲染之前把值中所有的HTML标签都删掉:striptags
    11 截断:truncate    <p>{{"hello every one' | truncate(9)}}</p>
    12 """

      4)过滤器链式调用

     2.3 模板继承

     

     

      

    2.4 HTML自动转义

      

      Markup还有很多方法,比如”escape()”呈现HTML标签, “striptags()”去除HTML标签。

    3、对请求和响应的处理

    3.1 Request 对象

     

     

     

     3.2  会话session

    会话可以用来保存当前请求的一些状态,以便于在请求之前共享信息

      

    3.3 构建响应

      

    3.4 Cookie的使用

      

    3.5 错误处理

    1)使用”abort()”函数可以直接退出请求,返回错误代码:

     2)重写错误页面:

     3)装饰器”@app.errorhandler()”除了可以注册错误代码外,还可以注册指定的异常类型。让我们来自定义一个异常:

    3.6 URL重定向

    访问第一个路由不带/时,Flask会自动重定向到正确地址。

    访问第二个路由时末尾带上/后Flask会直接报404 NOT FOUND错误。

    重定向”redirect()”函数就是当客户端浏览某个网址时,将其导向到另一个网址。

    常见的例子,比如用户在未登录时浏览某个需授权的页面,我们将其重定向到登录页要求其登录先。
    3、Web表单--使用Flask-WTF扩展

    3.1wtforms支持的HTML标准字段(需要导包)

    StringField 文本字段

    TextAreaField 多行文本字段

    PasswordField 密码文本字段

    HiddenField 隐藏文件字段

    DateField 文本字段 ,值为datetime.date文本格式

    DateTimeField 文本字段 ,值为datetime.datetime文本格式

    IntegerField 文本字段 ,值为整数

    DecimalField 文本字段, 值为decimal.Decimal

    FloatField 文本字段, 值为浮点数

    BooleanField 复选框,值为True和False

    RadioField 一组单选框

    SelectField 下拉列表

    SelectMutipleField 下拉列表,可选择多个值 

    FileField 文件上传字段

    SubmitField 表单提交按钮

    FormField 把表单作为字段嵌入另一个表单

    FieldList 一组指定类型的字段

    3.2wtforms.validators常用验证函数(需要导包)

    DataRequired 确保字段中有数据

    EqualTo 比较两个字段的值,常用于比较两次密码输入

    Length 验证输入的字符串长度

    NumberRange 验证输入的值在数字范围内

    URL 验证URL

    AnyOf 验证输入值在可选列表中

    NoneOf 验证输入值不在可选列表中

    3.3实现代码

      

     

       

    4、Flask中使用数据库

    4.1Flask-SQLAlchemy扩展

    安装:pip install flask-sqlalchemy

    安装连接mysql:pip install flask-mysqldb

    常用Flask的数据库设置:

     常用的SQLAlchemy字段类型:

      常用的SQLAlchemy关系选项:

     4.2定义数据库模型

    • 类需要继承db.Model
    • __tablename__此变量名用于定义表名
    • Column表示一个字段

     

      4.3数据库基本操作

    插入、修改、删除操作由数据库会话管理,用db.session表示:

     4.4模型之间的关联relationship

    一对多relationship(模型名);

    User希望有role属性,但是这个属性的定义,需要在另一个模型中定义;

     

      

    4.5查询操作-query

       

     查询方法,实际使用

     

  • 相关阅读:
    org.springframework.context.event.AbstractApplicationEventMulticaster
    40. Testing Prev Part IV. Spring Boot features
    nginx+redis 实现 jsp页面缓存,提升系统吞吐率
    SpringDataRedis事务 专题
    cat监控平台环境搭建 专题
    Archive for required library: ‘WebContent/WEB-INF/lib/xxx.jar cannot&n
    m2eclipse简单使用,创建Maven项目 ,运行mvn命令
    如何修改maven默认仓库(即repository)的路径
    MyEclipse2014不支持jre1.8吗
    MyEclipse 2015优化技巧
  • 原文地址:https://www.cnblogs.com/ybbybb/p/14569313.html
Copyright © 2011-2022 走看看