![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
flask
five-four-one
这个作者很懒,什么都没留下…
展开
-
ORM-数据库查询懒加载
数据库查询懒加载原创 2020-03-04 22:01:00 · 570 阅读 · 0 评论 -
ORM-切片操作limit和offset, slice
切片limit: 可以限制每次查询数据的数量offset: 可以限制查找数据时, 过滤前面多少条数据slice切片: 可以对Query对象使用切片操作,获取想要的数据示例创建的模型类, 用于测试切片操作limit: 限制显示多少条数据返回的查询对象 = session.query(模型类).limit(数据条数).all()offset: 过滤查找的数据跟li...原创 2020-03-03 21:29:38 · 2107 阅读 · 0 评论 -
ORM-三种排序方式
排序方式一order_by: 可以指定根据这个表中的某个字段进行排序, 如果前面加上一个"-"代表是降序排序查询时使用order_by,如果想要倒序显示必须desc()方法指定示例代码使用方式:正序排序返回的查询对象集 = session.query(模型类).order_by(模型类.字段名).all()倒序排序, 使用desc()方法或者前面加一个"-"...原创 2020-03-02 23:09:14 · 2848 阅读 · 0 评论 -
ORM-relationship的参数详解(待完善)
ORM层面的CASCADE如果将数据库的外键设置为"RESTRICT",那么在ORM层面,删除了父表的数据将会为NULL,如果不想这种情况发生, 那么就应该在主键中添加参数, nullable=False在SQlAlchemy,只要将一个数据添加到session中, 和他关联的数据都可以一起存入数据库中, 这些设置可以通过relationship中的关键字参数cascade设置属性...原创 2020-03-02 22:21:54 · 1152 阅读 · 0 评论 -
ORM-删除数据注意事项
删除数据注意事项创建两个模型类,两个模型类一对多的关系原创 2020-02-29 22:32:12 · 475 阅读 · 0 评论 -
ORM-数据表多对多关系的实现
多对多数据表的关系多对多表关系: 比如说: "csdn中一篇博客对应多个标签, 一个标签可以用多博客, 这就是多对多关系"多对多的关系需要通过一张中间表来绑定他们之间的关系多对多表的的示例先把两个需要的多对多表的模型定义出来, 不映射, 不需要创建外键关联使用Table类定义一个中间表, 中间表一般情况就是包含两个模型的外键字段即可, 并且让他们两个来作为一个"复合主键"Ta...原创 2020-02-29 22:07:14 · 945 阅读 · 0 评论 -
ORM-数据表一对一的实现
一对一的实现一对一: 比如说一个用户对应一张身份证, 而身份证的信息不常用, 不需要没用调用用户就把身份证信息调出来, 这个时候就可以将 " 身份证的信息抽取出来称为另一张表", 使两张表进行一对一的关联, """一张身份证只对应一个用户"""backref函数的导入from sqlalchemy.orm import backref第一个参数是固定的, 必须是字符串, 该字符串代...原创 2020-02-28 21:30:39 · 193 阅读 · 0 评论 -
ORM-数据表一对多的实现
数据表一对多一对多: 比如一个用户发布了很多篇文章, 用户就一方, 文章就是多方多表之间的访问(查询数据)上方有两个表:user和article表, 它们之间存在外键关系, 现在通过多方表(article)来查询数据普通的方式: 该方式太过于麻烦, 不符合ORM的设计意义使用orm中的relationship来访问(查询)外键关联的数据表relationship的导入:...原创 2020-02-28 20:27:13 · 474 阅读 · 0 评论 -
ORM-外键关联基本使用
外键在Mysql中,外键可以让表之间关系变得更加紧密, 在SQlAlchemy中, 通过ForeignKey类来实现,并且可以指定表的外键约束FroeignKey的导入from sqlalchemy import ForeignKey在从表中条件一个模型类.字段(属性)即可uid = Column(数据类型(必须跟绑定主表类型一致), ForeignKey("表名.属...原创 2020-02-25 20:09:29 · 890 阅读 · 0 评论 -
ORM-filter常用过滤条件
filter常用过滤条件equal: == not equal: !=equal: ==not equal: !=原创 2020-02-25 16:08:50 · 1621 阅读 · 0 评论 -
ORM-query聚合函数基本使用
query可用参数模型对象: 指定查找这个模型中所有对象模型中的属性, 可以指定只查找某个模型其中的几个属性聚合函数导入func, 所有的聚合函数都在func中from sqlalchemy import funcfunc.count: 统计行的数量func.avg: 求平均值func.max: 求最大值func.min: 求最小值func.sum: 求和fu...原创 2020-02-21 22:14:15 · 403 阅读 · 0 评论 -
ORM-Column常用数据类型和Column常用参数
删除模型的所有数据Column常用数据类型Intager: 整形, 映射到数据库中是int类型Flaot: 浮点型, 映射到数据库中是float类型, 它占据32位Double: 双精度浮点类型, 映射到数据库中书double类型 占据64位String: 可变字符类型, 映射到数据库中是varchar类型Boolean: 布尔类型 映射到数据库中是tinyint类型DECIMA...原创 2020-02-21 16:38:27 · 1832 阅读 · 0 评论 -
ORM-数据库的基本增删改查
sessionmaker的实现构建session会话对象, 所有的数据ORM操作都必须通过"session"会话对象来实现from sqlalchemy.orm import sessionmakersession = sessionmaker(数据库引擎对象)()session的实例化方式, 两种方式效果都一样Session = sessionmaker(数据库引擎对象)s...原创 2020-02-21 13:26:32 · 133 阅读 · 0 评论 -
ORM-模型的定义和映射
ORM模型的定义导入declarative_basefrom sqlalchemy.ext.declarative import declarative_base接收declarative_base函数返回的类Base = declarative_base(数据库引擎对象)编写模型类, 继承Base类"__tablename__"属性,必须写的属性, 代表了映射到...原创 2020-02-21 13:15:16 · 320 阅读 · 0 评论 -
python连接SQLAlchemy
SQLAlchemy安装pip install pymysqlpip install SQLAlchemy连接数据库from sqlalchemy import create_engineHOST = "127.0.0.1"PORT = "3306"DATABASE = "test_sql"USERNAME = "root"PASSWORD = "root"DB_URI ...原创 2020-02-19 14:41:50 · 141 阅读 · 0 评论 -
蓝图-文件寻找规则
蓝图模板文件寻找规则如果项目的"templates"文件夹中有相对应的模板文件, 就可以直接使用如果项目中的"templates"文件中没有找到对应模板文件, 那么就会再定义蓝图的时候指定的路径中寻找, 并且蓝图中指定的路径可以为相对路径, 相对于当前蓝图文件所在的目录根据模板指定的查找路径蓝图静态文件寻找规则在模板文件中, 加载静态文件, 如果使用"url_for("stat...原创 2020-02-19 13:55:02 · 328 阅读 · 0 评论 -
蓝图的使用
蓝图蓝图的作用是让我们的flask项目更加模块化, 结构更加清晰, 可以将相同模块的视图函数放在同一个蓝图下, 同一个文件中, 方便管理如果想要在某个蓝图下的所有的url都有url前缀, 那么可以在定义蓝图的时候, 指定url_prefix参数指定前缀访问蓝图的url时蓝图的使用项目根目录下创建一个python Package目录专门存放蓝图管理的模板...原创 2020-02-18 21:15:26 · 251 阅读 · 0 评论 -
类视图-装饰器
装饰器如果视图函数使用装饰器, 那么装饰器必须放在"app.route"装饰器下面, 否则装饰器无效果类视图的装饰器, 需要重写类视图的一个类属性"decorators", 该属性可以是元组, 列表 里面装的都是装饰器, 如: decorators=["装饰器1", "装饰器2"] 也可以是 decorators = (装饰器1, )视图函数使用装饰示例@wraps导入: from ...原创 2020-02-18 17:16:03 · 106 阅读 · 0 评论 -
类视图-基于请求方法的类视图
基于请求方法的类视图基于方法的类视图, 是根据请求的"method"来执行不同的方法, 若用户是发送的"get"请求, 那么将会执行这个类的"get"方法, 其他的"method"方法类似, 如: "post", "delete", "put"该方法可以让代码变得更加简洁, 方法中不需要通过"request.method=="GET"来判断请求方式请求方法类视图的导入from flas...原创 2020-02-18 16:52:45 · 183 阅读 · 0 评论 -
类视图-标准类视图
类视图之前接触的都是视图函数, 视图可以基于类来实现类视图的好处是支持继承, 但是类视图要通过"app.add_url_rule(url, view_func)"来注册标准类视图标准类视图, 必须继承自"flask.views.View"必须实现"dipatch_request"方法, 这个方法类似于视图函数, 也要返回一个基于Response或者子类的对象必须通过"app.ad...原创 2020-02-18 16:28:27 · 386 阅读 · 0 评论 -
jinja2-app.add_url_rule和app.route函数的剖析
app.add_url_rule()app.add_url_rule('/list/', endpoint="list", view_func=my_list)这个方法用来添加url与视图函数的映射, 如果没有填写"endpoint", 那么默认会使用"view_func"的名字作为"endpoint",以后在使用"url_for"时, 就要看映射时有没有传递"endpoint"参数,...原创 2020-02-18 15:46:00 · 281 阅读 · 0 评论 -
jinja2-模板的继承
为什么需要模板继承?模板继承可以把一些公用的代码单独抽取出来放到一个父模板中, 以后子模板直接继承即可。有利于代码的修改和代码的共用子模板继承语法使用extends语句, 来指明继承的父模板。父模板的路径,就是相对于templates文件夹下的绝对路径{% extends “父模板” %}注意点: 子模板中的代码, 第一行必须是{% extends “父模板” %}子模板使...原创 2020-02-17 15:17:54 · 388 阅读 · 0 评论 -
jinja2-加载静态文件
静态文件css js img 都是属于静态文件加载静态文件使用的是: url_for函数, 第一个参数需要为static, 第二个参数需要为一个关键字参数filename=路径, 路径要以当前项目的static目录作为根目录格式: {{ url_for("static", filename="静态文件路径") }}加载css文件实例项目的static目录下 创建css文件夹和c...原创 2020-02-17 14:50:30 · 2251 阅读 · 2 评论 -
jinja2-set和with语句
set语句在模板中, 可以使用set语句来定义变量{% set 变量名= 值 %} 定义的变量, 后面的代码都能够使用, 相当于python中的全局变量示例代码:with语句with语句定义的变量只能够在 with语句块中使用, 一旦超过了代码块就不能使用示例代码with语句也可以不定义变量, 可以使用set语句定义变量, 在with语句中定义的变量都是拥有变量作...原创 2020-02-17 14:37:09 · 2577 阅读 · 0 评论 -
jinja2-include模板标签
include标签的使用include标签相当于是直接将指定的模板中的代码复制粘贴到当前位置抽离模板直接使用include标签抽离模板调用传递的数据如果是抽离的模板 需要调用父模板传递的数据, 可以直接调用 不需要导入...原创 2020-02-17 13:25:58 · 1037 阅读 · 0 评论 -
jinja2-宏的使用
宏的介绍模板中的宏跟python的函数类似, 可以传递参数, 但是不能有返回值, 可以将一些经常用到的代码片段放入宏中, 然后把一些不固定的值抽取出来当成一个变量宏的定义{% macro input(name, value="", type="text") %} <input type="{{ type }}" name="{{ name }}" value="{{ val...原创 2020-02-13 14:48:05 · 474 阅读 · 0 评论 -
jinja2-条件判断和for循环
条件判断jinja2中所有的控制语句都放在"{%… %}“中, 并且一个”{% endxx %}"结束if判断: 跟python类似, 可以使用 > >= < <= == != 可以使用and or not来进行逻辑判断实例代码1for循环...原创 2020-02-13 13:45:22 · 13704 阅读 · 0 评论 -
jinja2-模板自定义过滤器
自定义过滤器过滤器本质上就是一个函数, 如果在模板中调用一个过滤器, 那么就会将这个变量的值作为第一个参数传给过滤器的函数, 然后函数的返回值作为过滤器的返回值, 需要使用到的装饰器: "@app.template_filter('自定义过滤器名称')"自定义过滤器自定义时间显示过滤器案例@app.template_filter('times')def handle_ti...原创 2020-02-12 20:09:35 · 614 阅读 · 0 评论 -
jinja2-模板过滤器
什么是过滤器在模板中, 过滤器相当于一个函数, 把当前的变量传入到过滤器中, 然后过滤器根据自身功能, 再返回对应的值, 之后再把结果渲染到页面中基本语法: {{ 变量 | 过滤器名称 }} 使用管道符号"|"进行组合abs过滤器abs过滤器返回一个数值的绝对值 例如: {{ 变量|abs }}default过滤器default过滤器: 如果变量不存在就使用默认值 {{ p...原创 2020-02-12 16:03:06 · 912 阅读 · 0 评论 -
jinja2-模板传参和url_for在模板的使用
模板传参在使用"render_template"渲染模板时, 可以使用关键字参数, 以后直接在模板中使用即可如果参数过多, 可以放入一个字典中, 然后再传字典参数时, 使用**字典名称, 模板就能使用字典的键直接取值了关键字传参关键字传参, 模板接收方式 {{ 关键字名称 }}传参为字典方式一: 传递字典给模板的方式传递字典的方式(推荐使用该方式)u...原创 2020-02-12 14:10:26 · 3739 阅读 · 0 评论 -
jinja2的基本使用
jinja2jinja2: jinja是日本寺庙的意思, 寺庙的英文是temple和模板的英文template发音类似, jinja2是默认的模仿Django模板的一个模板引擎, 由flask的作者开发 它速度快 被广泛使用, 并且提供了可选的沙箱模板来保证执行环境安全jinja2的优点让前端开发者和后端开发者工作分离减少flask项目代码的耦合性, 页面逻辑放在模板...原创 2020-02-12 13:28:25 · 893 阅读 · 0 评论 -
Response响应对象
Response响应对象详解导入方式from flask import Response视图函数的返回值被自动转换为一个响应对象, flask的转换逻辑如果返回是一个合法的响应对象(Response), 则直接返回如果返回值一个字符串, 那么flask会重新创建一个"werkzeug.wrapper.Response"对象, Response将该字符串作为主体, 状态码为2...原创 2020-02-11 17:08:37 · 1020 阅读 · 1 评论 -
url页面重定向
页面跳转和重定向重定向分为"永久重定向"和"暂时性重定向", 比如用户访问一个需要权限的网页, 但是用户没有登录,那么会跳转到登录页面,这叫暂时性重定向永久性重定向:http状态码是:301, 多用于旧网址暂时性重定向:http状态码为:302, 暂时跳转到一个页面flask跳转页面使用redirect, 导入方式from flask import redirect...原创 2020-02-11 16:30:30 · 265 阅读 · 0 评论 -
flask小技巧
在局域网中让其他电脑访问我的网站如果想在同一个局域网下让其他电脑访问自己电脑中的flask网站, 需要设置host="0.0.0.0" 才能访问到指定端口号flask项目默认端口号为 5000 如果想要更换端口, 需要设置 port=端口号url的唯一定义url路径时, 一定要在最后加上一个斜杠"/"GET和POST请求方式GET请求: 只会在服务器上获取资源, ...原创 2020-02-11 16:16:02 · 192 阅读 · 0 评论 -
自定义URL转换器
自定义URL转换器的方式定义一个类, 继承自"BaseConverter类, 导入类 : from werkzeug.routing import BaseConverter"在自定义的类中, 重写"regex" 正则表达式的变量将自定义类映射到"app.url_map.converters中, app.url_map.converters['转换器名称'] = 自定义的类名"自定义转...原创 2020-02-11 14:53:03 · 427 阅读 · 0 评论 -
url_for的详解
url_for的作用url_for可以将url的路径进行反转url_for的导入方式from flask import url_for为什么需要URl_for如果将来需要修改"url", 但是没有修改该URL对应的函数名, 就不用贴换URl了"url_for"会自动处理特殊的字符, 不需要手动处理url_for的使用使用格式: url_for("视图函数名称", 参数...原创 2020-02-11 13:05:59 · 10257 阅读 · 0 评论 -
flask-URL与函数的映射
URL与函数的映射使用@app.route装饰器, 可以让URL和视图函数进行映射@app,route装饰器可以执行URL的映射规则来更加详细的映射, 比如使用/p/<id>, id的数据可以是1, 2,3等URL访问参数和视图函数参数path的形式(将参数嵌入到路径中)url路径为: /p/<id>/, "<id>"为参数可以灵活变化的, 尖括...原创 2020-02-10 16:48:10 · 403 阅读 · 0 评论 -
flask-开启debug模式和配置文件
开启debug模式为什么需要开启DEBUG模式如果开启了DEBUG模式, 代码如果抛出异常, 浏览器页面会看到具体的错误信息,开启了DEBUG模式, 那么修改代码就会自动重新加载整个网站配置DEBUG模式的四种方式"app,run()中传递一个参数: debug=True就可以开启DEBUG模式"在"app.py"文件中添加: "app.debug=True" 可以开启DEBUG...原创 2020-02-10 14:36:22 · 374 阅读 · 0 评论 -
flask的介绍
导入flaskfrom flask import Flask从flask包中带入Flask类, Flask类是项目的核心以后很多操作都基于该类, 注册url, 注册蓝图等app = Flask(name)app = Flask(__name__)创建一个Flask对象, 传递___name__参数进去__name__参数的作用:可以规定模板和静态文件的查找路径一些Fl...原创 2020-02-10 13:58:48 · 89 阅读 · 0 评论 -
flask框架的笔记目录
flask安装和创建原创 2020-02-09 15:51:19 · 140 阅读 · 0 评论