07 2024 档案

摘要:1、蓝图 在一个Flask 应用项目中,如果业务视图过多,可否将以某种方式划分出的业务单元单独维护,将每个单元用到的视图、静态文件、模板文件等独立分开?例如从业务角度上,可将整个应用划分为用户模块单元、商品模块单元、订单模块单元,如何分别开发这些不同单元,并最终整合到一个项目应用中? 一、蓝图介绍 阅读全文
posted @ 2024-07-24 14:13 yongheng999 阅读(30) 评论(0) 推荐(0) 编辑
摘要:模版中的url_for 跟我们后台视图函数中的url_for 使用起来基本是一模一样的。也是传递视图函数的名字,也可以传递参数。使用的时候,需要在url_for 左右两边加上一个{{ url_for('func') }} 1、动态超链接 html页面使用如: <a href="{{ url_for( 阅读全文
posted @ 2024-07-23 16:32 yongheng999 阅读(111) 评论(0) 推荐(0) 编辑
摘要:一般我们的网站虽然页面多,但是很多部分是重用的,比如页首,页脚,导航栏之类的。对于每个页面,都要写这些代码,很麻烦。Flask的Jinja2模板支持模板继承功能,省去了这些重复代码。 第一种方法: 使用extends 方法继承父模板: <div> {% block temp1 %} <p> pare 阅读全文
posted @ 2024-07-23 13:38 yongheng999 阅读(16) 评论(0) 推荐(0) 编辑
摘要:测试器测试器总是返回一个布尔值,它可以用来测试一个变量或者表达式,使用”is”关键字来进行测试。 {% set name='ab' %} {% if name is lower %} <h2>"{{ name }}" are all lower case.</h2> {% endif %} 测试器本 阅读全文
posted @ 2024-07-22 16:58 yongheng999 阅读(8) 评论(0) 推荐(0) 编辑
摘要:代码实现: from flask import Flask,render_template app = Flask(__name__) def get_top3(list): #返回列表前三个 return list[:3] #方式一:注意一个过滤器 app.jinja_env.filters["g 阅读全文
posted @ 2024-07-22 11:37 yongheng999 阅读(9) 评论(0) 推荐(0) 编辑
摘要:列表相关的过滤器 # 取第一个元素 #}<p>{{ [1,2,3] | first }}</p>{# 取最后一个元素 #}<p>{{ [1,2,3] | last }}</p>{# 返回列表长度,可以写为count #}<p>{{ [1,2,3,4,5] | length }}</p>{# 列表求和 阅读全文
posted @ 2024-07-22 11:09 yongheng999 阅读(6) 评论(0) 推荐(0) 编辑
摘要:什么是过滤器? 实质上就是一个转换函数。变量可以通过“过滤器”进行修改,过滤器可以理解为是jinja2里面的内置函数和字符串处理函数。常用的过滤器有: 1、字符串的过滤器 <body>{# 当变量未定义时,显示默认字符串,可以缩写为d #}<p>{{ name | default('No name' 阅读全文
posted @ 2024-07-22 10:04 yongheng999 阅读(8) 评论(0) 推荐(0) 编辑
摘要:我们想要显示序号,可以通过loop.index来展示 这里我们想遍历一个复杂的列表字典,可以通过dict.items(),获取到字典的键和值 实现效果: 代码实现: from flask import Flask,render_templateapp = Flask(__name__)student 阅读全文
posted @ 2024-07-19 14:04 yongheng999 阅读(7) 评论(0) 推荐(0) 编辑
摘要:表达式 最常用的是变量,由Flask渲染模板时传过来,比如name 也可以是任意一种Python基础类型,比如字符串{{stu_list}};或者数值,列表,元祖,字典,布尔值。 运算。包括算数运算,如{{ 2 + 3 }};比较运算,如{{ 2 > 1 }};逻辑运算,如{{ False and 阅读全文
posted @ 2024-07-19 10:48 yongheng999 阅读(7) 评论(0) 推荐(0) 编辑
摘要:Jinja2:是Python的Web项目中被广泛应用的模板引擎,是由Python实现的模板语言,Jinja2 的作者也是 Flask 的作者。他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能,其是Flask内置的模板语言。jinja2之所以被广泛使用是因为它具有以下优点:1 阅读全文
posted @ 2024-07-19 10:45 yongheng999 阅读(65) 评论(0) 推荐(0) 编辑
摘要:视图函数的主要作用是生成请求的响应,这是最简单请求.实际上,视图函数有两个作用: 处理业务逻辑 返回响应内容 在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本. 模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值需要从使用 的数据中获取 阅读全文
posted @ 2024-07-19 10:43 yongheng999 阅读(19) 评论(0) 推荐(0) 编辑
摘要:flask 如何在不同场景返回不同响应信息呢? 1 返回重定向 app = Flask(__name__)@app.route('/demo')def demo(): return redirect('http://www.baidu.com',code=201) 2返回json 数据: @app. 阅读全文
posted @ 2024-07-18 15:28 yongheng999 阅读(7) 评论(0) 推荐(0) 编辑
摘要:这里我们定义一个html的静态文件,模拟用户正常提交表单 需要注意的是,文件上传时,需要在form表单定义这个属性 enctype="multipart/form-data 业务代码实现: from flask import Flask, requestapp=Flask(__name__)@app 阅读全文
posted @ 2024-07-18 13:29 yongheng999 阅读(28) 评论(0) 推荐(0) 编辑
摘要:在flask框架中,可以定义路由请求方式 利用methods参数可以自己指定一个接口的请求方式 get: 把参数放在url后面,参数使用字符方式传输,所以也叫明文传输 post: 表单提交,采用字节流方式传递数据,文件传输必须用post 这里我们定义一个静态文件: get请求参数代码实现: from 阅读全文
posted @ 2024-07-18 11:30 yongheng999 阅读(29) 评论(0) 推荐(0) 编辑
摘要:url_for 函数 一般我们通过一个url就可以执行到某一个函数,反过来,我们知道一个函数, 怎么去获得url呢?url_for 函数就可以帮我们实现这个功能 、url_for 函数,接收两个及以上的参数,接收函数名作为第一个参数,接收 对应url规则命名的参数,如果还出现其他的参数,则会添加到u 阅读全文
posted @ 2024-07-18 10:31 yongheng999 阅读(3) 评论(0) 推荐(0) 编辑
摘要:我们要自定义转换器就要声明一个类,然后继承父类的BaseConverter 需要用正则表达式的需要重写父类的regex 代码实现: from flask import Flaskfrom werkzeug.routing import BaseConverterapp = Flask(__name_ 阅读全文
posted @ 2024-07-18 10:07 yongheng999 阅读(12) 评论(0) 推荐(0) 编辑
摘要:这里我们声明转换器类型为 int from flask import Flaskapp= Flask(__name__)@app.route('/user/<int(min=1,max=50):user_id>')def userid(user_id): print(type(user_id)) r 阅读全文
posted @ 2024-07-18 09:52 yongheng999 阅读(7) 评论(0) 推荐(0) 编辑
摘要:获取所有视图函数信息,并以json形式返回 这里我们用的是flask 框架中内部的json 代码实现: from flask import Flask,jsonapp = Flask(__name__)@app.route('/')def index(): rulse=app.url_map.ite 阅读全文
posted @ 2024-07-17 18:00 yongheng999 阅读(7) 评论(0) 推荐(0) 编辑
摘要:配置文件: 代码: from flask import Flaskapp=Flask(__name__)app.config.from_pyfile('setting.py')@app.route('/')def index(): print(app.config['USER']) print(ap 阅读全文
posted @ 2024-07-17 16:41 yongheng999 阅读(2) 评论(0) 推荐(0) 编辑
摘要:这里我们从本地类当中取值: from flask import Flaskclass DefaultConfig(object): """default project config""" USER = "zhang" PWD ="<PASSWORD>"app=Flask(__name__)app. 阅读全文
posted @ 2024-07-17 16:37 yongheng999 阅读(6) 评论(0) 推荐(0) 编辑
摘要:需要安装flask : pip install flask 项目目录结构: 代码: from flask import Flaskapp = Flask(__name__,static_url_path='/static',static_folder='static')@app.route('/') 阅读全文
posted @ 2024-07-17 16:25 yongheng999 阅读(76) 评论(0) 推荐(0) 编辑
摘要:在使用过程中,会发现上述第三步的使用,会有不少局限,譬如必须切换到指定目录才能操作等。通过安装virtualenvwrapper-win 可以更加简便的使用虚拟环境(需要先安装virtualenv)1. pip安装 pip install virtualenvwrapper-win 2. 在环境变量 阅读全文
posted @ 2024-07-17 16:22 yongheng999 阅读(23) 评论(0) 推荐(0) 编辑
摘要:在使用过程中,会发现上述第三步的使用,会有不少局限,譬如必须切换到指定目录才能操作等。通过安装virtualenvwrapper-win 可以更加简便的使用虚拟环境(需要先安装virtualenv)1. pip安装 pip install virtualenvwrapper-win 2. 在环境变量 阅读全文
posted @ 2024-07-17 11:29 yongheng999 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1. 安装好python环境 2. 安装虚拟环境库,在cmd中输入: pip install virtualenv3. 创建虚拟环境,在cmd中切换到需要创建虚拟环境的目录下,执行: virtualenv env_name4. 激活虚拟环境,在cmd中进入到 第三步创建的 env_name/Scri 阅读全文
posted @ 2024-07-17 11:28 yongheng999 阅读(77) 评论(0) 推荐(0) 编辑
摘要:过滤是数据提取的一个很重要的功能,以下对一些常用的过滤条件进行解释,并且这些过滤条件都是只能通过where方法实现的:1. equals : ==,或者.is_ 函数2. not equals : != 或者 isnot函数3. like & ilike [不区分大小写]:4. 在某个集合中存在,i 阅读全文
posted @ 2024-07-09 17:14 yongheng999 阅读(27) 评论(0) 推荐(0) 编辑
摘要:1) 先查询,再删除 # 先查询出来,再删除 emp = session.get(Employee, 2) session.delete(emp) 2) 直接删除 # 删除的数据,由where条件决定session.execute(delete(Employee).where(Employee.id 阅读全文
posted @ 2024-07-09 17:09 yongheng999 阅读(119) 评论(0) 推荐(0) 编辑
摘要:1) 先查询出来,再修改属性 # 查询,再修改 old_emp = session.get(Emp, 1) print(old_emp.name) old_emp.name = '李四' 2) 直接根据主键修改 # 注意where语句就是条件的意思,其中id前面的Employee必须有 sessio 阅读全文
posted @ 2024-07-09 17:08 yongheng999 阅读(20) 评论(0) 推荐(0) 编辑
摘要:1)根据主键查询emp = session.get(Emp, 1)2) 查询整张表的数据 a、返回模型对象 statement = select(Employee) list_emp = session.scalars(statement).all() for o in list_emp: prin 阅读全文
posted @ 2024-07-09 17:06 yongheng999 阅读(21) 评论(0) 推荐(0) 编辑
摘要:对模型对象进行新增,有两种方式: <!--第一种:类SQL方式--> insert_stmt = insert(User).values(name='name1') with Session() as sess: sess.execute(insert_stmt) sess.commit() <!- 阅读全文
posted @ 2024-07-09 16:56 yongheng999 阅读(6) 评论(0) 推荐(0) 编辑
摘要:session用于创建程序和数据库之间的会话,所有对象的载入和保存都需通过session对象 。在Web项目中,一个请求共用一个session对象 1、创建Session对象的两种方式 # 第一种,需要自己提交事务 with Session(bind=engine) as session: sess 阅读全文
posted @ 2024-07-09 16:54 yongheng999 阅读(44) 评论(0) 推荐(0) 编辑
摘要:# 关联查询 isouter=True 表示使用外连接# 1、查询2020年入职的员工姓名以及该员工的所在部门名称result = session.execute(select(Employee.name, Dept.name).join(Dept,isouter=True).where(extra 阅读全文
posted @ 2024-07-09 16:49 yongheng999 阅读(28) 评论(0) 推荐(0) 编辑
摘要:在 SQLAlchemy 中,要想表示多对多关系,除了关系两侧的模型外,我们还需要创建一个关联表(middle_table)。关联表不存储数据,只用来存储关系两侧模型的外键对应关系。 # 多对多关联,先定义中间表(没有对应的模型类) middle_table = Table( 't_user_rol 阅读全文
posted @ 2024-07-09 16:48 yongheng999 阅读(17) 评论(0) 推荐(0) 编辑
摘要:一对一关系实际上是通过建立双向关系的一对多关系的基础上转化而来。比如:一个用户对应一张身份证,一张身份证属于一个用户。 class IdCard(Base): """省份证的模型类, 它和员工之间是一对一的关联关系""" __tablename__ = 't_id_card' id: Mapped[ 阅读全文
posted @ 2024-07-09 16:37 yongheng999 阅读(17) 评论(0) 推荐(0) 编辑
摘要:比如:作者和文章之间, 部门和员工之间都是一对多的关联关系。反过来就是:多对一的关联关系 1、定义外键约束 定义关系的第一步是创建外键。外键是(foreign key)用来在 A 表存储 B 表的主键值以便和 B 表建立联系的关系字段。因为外键只能存储单一数据(标量),所以外键总是在 “多” 这一侧 阅读全文
posted @ 2024-07-09 16:34 yongheng999 阅读(49) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示