Flask学习日记1

来源:互联网 发布:环保监测数据的应用 编辑:程序博客网 时间:2024/05/16 04:42

1. Flask

解析:Flask是一个使用Python编写的轻量级Web应用框架。其WSGI工具箱采用Werkzeug,模板引擎则使用Jinja2。Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份证技术等。


2. 访问虚拟机中Flask Web

解析:

(1)app.run(host='0.0.0.0')

(2)关闭服务器中的防火墙。


3. ORM(Object-Relational Mapping)

解析:把关系数据库的表结构映射到对象上。在Python中最有名的ORM框架是SQLAlchemy,通过pip install 

sqlalchemy命令即可安装。


4. WSGI(Python Web Server Gateway Interface)

解析:Python Web服务器网关接口是Python应用程序或框架和Web服务器之间的一种接口。


5. 路由 

解析:处理URL和函数之间关系的程序。


6. 程序上下文

解析:
(1)current_app:当前激活程序的程序实例。

(2)g:处理请求时用作临时存储的对象。每次请求都会重设这个变量。


7. 请求上下文

解析:

(1)request:请求对象,封装了客户端发出的HTTP请求中的内容。

(2)session:用户会话,用于存储请求之间需要“记住”的值的词典。


8. 请求钩子

解析:

(1)before_first_request:注册一个函数,在处理第一个请求之前运行。

(2)before_request:注册一个函数,在每次请求之前运行。

(3)after_request:注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。

(4)teardown_request:注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行。


9. Flask-Script

解析:Flask-Script是一个Flask扩展,为Flask程序添加了一个命令行解析器。Flask-Script自带了一组常用选项,而且

还支持自定义命令。使用pip install flask-script命令安装。


10. render_template

解析:render_template函数的第一个函数是模板的文件名。随后的参数都是键值对,表示模板中变量对应的真实值。


11. Jinja2变量过滤器

解析:

(1)safe:渲染时不转义。

(2)capitalize:把值的首字母转换成大写,其它字母转换成小写。

(3)lower:把值转换成小写形式。

(4)upper:把值转换成大写形式。

(5)title:把值中每个单词的首字母都转换成大写。

(6)trim:把值的首尾空格去掉。

(7)striptags:渲染之前把值中所有的HTML标签都删掉。


12. Flask-Bootstrap基模板中定义的块

解析:

(1)doc:整个HTML文档。

(2)html_attribs:<html>标签的属性。

(3)html:<html>标签中的内容。

(4)head:<head>标签中的内容。

(5)title:<title>标签中的内容。

(6)metas:一组<meta>标签。

(7)styles:层叠样式表定义。

(8)body_attribs:<body>标签的属性。

(9)body:<body>标签中的内容。

(10)navbar:用户定义的导航条。

(11)content:用户定义的页面内容。

(12)scripts:文档底部的JavaScript声明。


13. app.config

解析:app.config字典可用来存储框架、扩展和程序本身的配置变量。使用标准的字典句法就能把配置值添加到

app.config对象中。这个对象还提供了一些方法,可以从文件或环境中导入配置值。


14. WTForms支持的HTML标准字段

解析:

(1)StringField:文本字段。

(2)TextAreaField:多行文本字段。

(3)PasswordField:密码文本字段。

(4)HiddenField:隐藏文本字段。

(5)DateField:文本字段,值为datetime.date格式。

(6)DateTimeField:文本字段,值为datetime.datetime格式。

(7)IntegerField:文本字段,值为整数。

(8)DecimalField:文本字段,值为decimal.Decimal。

(9)FloatField:文本字段,值为浮点数。

(10)BooleanField:复选框,值为True和False。

(11)RadioField:一组单选框。

(12)SelectField:下拉列表。

(13)SelectMultipleField:下拉列表,可选择多个值。

(14)FileField:文件上传字段。

(15)SubmitField:表单提交按钮。

(16)FormField:把表单作为字段嵌入另一个表单。

(17)FieldList:一组指定类型的字段。


15. WTForms内建的验证函数

解析:

(1)Email:验证电子邮件地址。

(2)EqualTo:比较两个字段的值;常用于要求输入两次密码进行确认的情况。

(3)IPAddress:验证IPv4网络地址。

(4)Length:验证输入字符串的长度。

(5)NumberRange:验证输入的值在数字范围内。

(6)Optional:无输入值时跳过其他验证函数。

(7)Required:确保字段中有数据。

(8)Regexp:使用正则表达式验证输入值。

(9)URL:验证URL。

(10)AnyOf:确保输入值在可选值列表中。

(11)NoneOf:确保输入值不在可选值列表中。


16. 用户会话

解析:默认情况下,用户会话保存在客户端cookie中,使用设置的SECRET_KEY进行加密签名。如果篡改了cookie

中的内容,签名就会失效,会话也会随之失效。


17. Flask-SQLAlchemy

解析:Flask-SQLAlchemy是一个Flask扩展,简化了在Flask程序中使用SQLAlchemy的操作。SQLAlchemy是一个很

强大的关系型数据库框架,支持多种数据库后台。SQLAlchemy提供了高层ORM,也提供了使用数据库原生SQL的低

层功能。使用pip install flask-sqlalchemy命令安装。


18. FLask-SQLAlchemy数据库URL

解析:

(1)MySQL:mysql://username:password@hostname/database

(2)Postgres:postgresql://username:password@hostname/database

(3)SQLite(Unix):sqlite:////absolute/path/to/database

(4)SQLite(Windows):sqlite:///c:/absolute/path/to/database


19. 最常用的SQLAlchemy列类型

解析:

(1)Integer:int:普通整数,一般是32位。

(2)SmallInteger:int:取值范围小的整数,一般是16位。

(3)BigInteger:int或long:不限制精度的整数。

(4)Float:float:浮点数。

(5)Numeric:decimal.Decimal:定点数。

(6)String:str:变长字符串。

(7)Text:str:变长字符串,对较长或不限长度的字符串做了优化。

(8)Unicode:unicode:变长Unicode字符串。

(9)UnicodeText:unicode:变长Unicode字符串,对较长或不限长度的字符串做了优化。

(10)Boolean:bool:布尔值。

(11)Date:datetime.date:日期。

(12)Time:datetime.time:时间。

(13)DateTime:datetime.datetime:日期和时间。

(14)Interval:datetime.timedelta:时间间隔。

(15)Enum:str:一组字符串。

(16)PickleType:任何Python对象:自动使用Pickle序列化。

(17)LargeBinary:str:二进制文件。


20. 最常使用的SQLAlchemy列选项

解析:

(1)primary_key:如果设为True,这列就是表的主键。

(2)unique:如果设为True,这列不允许出现重复的值。

(3)index:如果设为True,为这列创建索引,提升查询效率。

(4)nullable:如果设为True,这列允许使用空值;如果设为False,这列不允许使用空值。

(5)default:为这列定义默认值。


21. 常用的SQLAlchemy关系选项

解析:

(1)backref:在关系的另一个模型中添加反向引用。

(2)primaryjoin:明确指定两个模型之间使用的联结条件。只在模棱两可的关系中需要指定。

(3)lazy:指定如何加载相关记录。可选值有select(首次访问时按需加载)、immediate(源对象加载后就加

载)、joined(加载记录,但使用联结)、subquery(立即加载,但使用子查询),noload(永不加载)和

dynamic(不加载记录,但提供加载记录的查询)。

(4)uselist:如果设为Fales,不使用列表,而使用标量值。

(5)order_by:指定关系中记录的排序方式。

(6)secondary:指定多对多关系中关系表的名字。

(7)secondaryjoin:SQLAlchemy无法自行决定时,指定多对多关系中的二级联结条件。


22. 常用的SQLAlchemy查询过滤器

解析:

(1)filter():把过滤器添加到原查询上,返回一个新查询。

(2)filter_by():把等值过滤器添加到原查询上,返回一个新查询。

(3)limit():使用指定的值限制原查询返回的结果数量,返回一个新查询。

(4)offset():偏移原查询返回的结果,返回一个新查询。

(5)order_by():根据指定条件对原查询结果进行排序,返回一个新查询。

(6)group_by():根据指定条件对原查询结果进行分组,返回一个新查询。


23. 最常使用的SQLAlchemy查询执行函数

解析:

(1)all():以列表形式返回查询的所有结果。

(2)first():返回查询的第一个结果,如果没有结果,则返回None。

(3)first_or_404():返回查询的第一个结果,如果没有结果,则终止请求,返回404错误响应。

(4)get():返回指定主键对应的行,如果没有对应的行,则返回None。

(5)get_or_404():返回指定主键对应的行,如果没找到指定的主键,则终止请求,返回404错误响应。

(6)count():返回查询结果的数量。

(7)paginate():返回一个Paginate对象,它包含指定范围内的结果。


24. Flask-Mail SMTP服务器的配置

解析:

(1)MAIL_SERVER:localhost:电子邮件服务器的主机名或IP地址。

(2)MAIL_PORT:25:电子邮件服务器的端口。

(3)MAIL_USE_TLS:False:启用传输层安全(Transport Layer Security,TLS)协议。

(4)MAIL_USE_SSL False:启用安全套接层(Secure Sockets Layer,SSL)协议。

(5)MAIL_USERNAME:None:邮件账户的用户名。

(6)MAIL_PASSWORD:None:邮件账户的密码。


参考文献:

[1] 欢迎使用Flask:http://docs.jinkan.org/docs/flask/index.html

原创粉丝点击