随笔分类 - Flask
使用Flask时踩过的坑以及一些注意事项
摘要:AdminLTE左侧菜单展开会有半秒钟的延迟. 看起来会慢半拍. 可修改 admin/dist/js/app.min.js中的 animationSpeed值(默认为500) 如下:
阅读全文
摘要:### 安装: Flask-Restful需要在Flask 0.8以上的版本,在Python2.6或者Python3.3上运行。通过pip install flask-restful即可安装。 ### 基本使用:1. 从`flask_restful`中导入`Api`,来创建一个`api`对象。2.
阅读全文
摘要:使用信号分为3步,第一是定义一个信号,第二是监听一个信号,第三是发送一个信号。 1. 定义信号:定义信号需要使用到blinker这个包的Namespace类来创建一个命名空间。比如定义一个在访问了某个视图函数的时候的信号。示例代码如下: 2. 监听信号:监听信号使用singal对象的connect方
阅读全文
摘要:# 上下文: ### Local对象:在`Flask`中,类似于`request`的对象,其实是绑定到了一个`werkzeug.local.Local`对象上。这样,即使是同一个对象,那么在多个线程中都是隔离的。类似的对象还有`session`以及`g`对象。 ### Thread Local对象:
阅读全文
摘要:### session:1. session的基本概念:session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,session是一个思路、一个概念、一个服务器存储授权信息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现。虽然实现不
阅读全文
摘要:### 什么是cookie:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的
阅读全文
摘要:# 文件上传笔记:1. 在模版中,form表单中,需要指定`encotype='multipart/form-data'`才能上传文件。2. 在后台如果想要获取上传的文件,那么应该使用`request.files.get('avatar')`来获取。3. 保存文件之前,先要使用`werkzeug.u
阅读全文
摘要:# WTForms笔记:这个库一般有两个作用。第一个就是做表单验证,把用户提交上来的数据进行验证是否合法。第二个就是做模版渲染。 ### 做表单验证:1. 自定义一个表单类,继承自wtforms.Form类。2. 定义好需要验证的字段,字段的名字必须和模版中那些需要验证的input标签的name属性
阅读全文
摘要:# flask_migrate笔记:在实际的开发环境中,经常会发生数据库修改的行为。一般我们修改数据库不会直接手动的去修改,而是去修改ORM对应的模型,然后再把模型映射到数据库中。这时候如果有一个工具能专门做这种事情,就显得非常有用了,而flask-migrate就是做这个事情的。flask-mig
阅读全文
摘要:### 安装:```shellpip install flask-sqlalchemy``` ### 数据库连接:1. 跟sqlalchemy一样,定义好数据库连接字符串DB_URI。2. 将这个定义好的数据库连接字符串DB_URI,通过`SQLALCHEMY_DATABASE_URI`这个键放到`
阅读全文
摘要:### subquery:子查询可以让多个查询变成一个查询,只要查找一次数据库,性能相对来讲更加高效一点。不用写多个sql语句就可以实现一些复杂的查询。那么在sqlalchemy中,要实现一个子查询,应该使用以下几个步骤:1. 将子查询按照传统的方式写好查询代码,然后在`query`对象后面执行`s
阅读全文
摘要:### join:1. join分为left join(左外连接)和right join(右外连接)以及内连接(等值连接)。2. 参考的网页:http://www.jb51.net/article/15386.htm3. 在sqlalchemy中,使用join来完成内连接。在写join的时候,如果不
阅读全文
摘要:### group_by:根据某个字段进行分组。比如想要根据性别进行分组,来统计每个分组分别有多少人 ### having: having是对查找结果进一步过滤。比如只想要看未成年人的数量,那么可以首先对年龄进行分组统计人数,然后再对分组进行having过滤。示例代码如下:
阅读全文
摘要:### 懒加载:在一对多,或者多对多的时候,如果想要获取多的这一部分的数据的时候,往往能通过一个属性就可以全部获取了。比如有一个作者,想要或者这个作者的所有文章,那么可以通过user.articles就可以获取所有的。但有时候我们不想获取所有的数据,比如只想获取这个作者今天发表的文章,那么这时候我们
阅读全文
摘要:### limit、offset和切片操作:1. limit:可以限制每次查询的时候只查询几条数据。2. offset:可以限制查找数据的时候过滤掉前面多少条。3. 切片:可以对Query对象使用切片操作,来获取想要的数据。可以使用`slice(start,stop)`方法来做切片操作。也可以使用`
阅读全文
摘要:### 排序:1. order_by:可以指定根据这个表中的某个字段进行排序,如果在前面加了一个-,代表的是降序排序。2. 在模型定义的时候指定默认排序:有些时候,不想每次在查询的时候都指定排序的方式,可以在定义模型的时候就指定排序的方式。有以下两种方式: * relationship的order_
阅读全文
摘要:### 一对一的关系:在sqlalchemy中,如果想要将两个模型映射成一对一的关系,那么应该在父模型中,指定引用的时候,要传递一个`uselist=False`这个参数进去。就是告诉父模型,以后引用这个从模型的时候,不再是一个列表了,而是一个对象了。示例代码如下:
阅读全文
摘要:### ORM关系以及一对多:mysql级别的外键,还不够ORM,必须拿到一个表的外键,然后通过这个外键再去另外一张表中查找,这样太麻烦了。SQLAlchemy提供了一个`relationship`,这个类可以定义属性,以后在访问相关联的表的时候就直接可以通过属性访问的方式就可以访问得到了。示例代码
阅读全文
摘要:### 外键:使用SQLAlchemy创建外键非常简单。在从表中增加一个字段,指定这个字段外键的是哪个表的哪个字段就可以了。从表中外键的字段,必须和父表的主键字段类型保持一致。示例代码如下: 外键约束有以下几项: 1. RESTRICT:父表数据被删除,会阻止删除。默认就是这一项。 2. NO AC
阅读全文
摘要:1. equal 2. not equal 3. like, ilike 4.in 5. not in 6. is null 7. is not null 8. and 9. or #### 如果想查看orm底层查询sql可以在filter函数后面不写人物的函数如:
阅读全文
浙公网安备 33010602011771号