机制:服务器端发送的小段文本信息存储在客户端硬盘 功能:记录用户偏好,请求.页面.站点间共享信息 特点:易丢失.安全隐患 添加cookie,需要用到make_respons.set_cookie @app.route('/setck/')def setck(): """ 添加cookie """ response = make_response('ok') response.set_cookie('username', 'aaa') return…
session管理和使用,需要用到flask的session模块和设置安全码:app.secret_key 比如列表页和编辑功能只能给admin用 列表页 编辑页 添加session 登录成功时,把username添加到session里面 app.secret_key = 'qoihf2397r21380r2/./ad' # 加密的安全码,越复杂越好,flask后台自动进行加密 @app.route('/login/', methods=['GET', 'POST'])def login():…
flask用的是jinja2模板,有自己特定的语法 形参: 在html里面留占位参数: {{ 参数名 }},后端传值时,参数名=参数值 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>b页面</title></head><body> <h1>{{ user }},你好<…
ajax除了用原生的js实现之外,也可以使用jquery实现,而且用jquery更方便 看一个简单的示例,保留上一篇的content路由和html,实现上一篇一样的功能,点击获取内容,局部刷新 准备一个页面用于被调用 <h1>这是content.html的h1标签</h1><p style="background: red"> 这是content.html的p标签,红色 <a href="https://www.baidu.com/&…
前面做的wtform验证是服务器端的验证,需要把数据传输到服务器,服务器验证后再吧结果传输到前端,网络慢的时候,用户体验不好,所以需要前端验证,且后端验证不能少 传统的js或者jquery如果要验证信息,需要把一个个元素下的信息拿下来,再验证,而validation可以根据元素定位,可以直接就验证了 validation官网:https://jqueryvalidation.org/cnd引用地址:https://www.bootcdn.cn/jquery-validate/引用标签:<scri…
在实际工作中,前后端数据交互大部分都是用的json格式,后端把数据处理完后,把json传给前端,前端再解析 项目结构 models里面加入把数据转为字典的方法 from datetime import datetimefrom flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Department(db.Model): """ 部门 """ __tablename__ = 'de…
jinja2是python的模板引擎, 在写python web使用的过程中,macro可以节省大量的代码 比如上一篇的渲染页面 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>用户注册</title></head><body><form action="#"…
连接数据库的频率很高,所以把数据库操作封装起来 函数封装: def make_dicts(cursor, row): """ 将游标获取的Tuple根据数据库列表转换为dict """ return dict((cursor.description[idx][0], value) for idx, value in enumerate(row)) def get_db(): """ 获取(简历数据库链接) g: fl…
a.b两个视图,分别返回a的页面和b的页面 重定向:redirect 重定向到路由:请求/a/时,重定向到/b/ 重定向到视图函数:url_for(“函数名“),访问/a/时,重定向到函数b() 主动返回404:abort # coding:utf-8from flask import Flask, render_template, redirect, url_for, abort app = Flask(__name__) # 访问/help/时主动返回404@app.route('/help…
可以根据flask的request对象获取所有的请求信息 path = request.path # 获取请求地址method = request.method # 获取请求方法ip = request.remote_addr # 请求来源的ipform = request.form # 获取form表单的数据value = request.values # 获取查询字符串/表单数据headers = request.headers # 后区头部信息User_Agent = request.he…
当get请求传参时,用?分隔参数和域名,用&分隔参数,如果参数里面本身就有&符号就会识别不出来,还是会当成分隔符,所以这些数据在传输的时候,就需要转义,现在普遍是转成urlencode编码:%20%xx%23 在jinja2模板里面,可以使用 data|urlencode 发送urlencode编码,而python里面又有urllib.parse.unquote()可以解析urlencode编码 视图函数 html:访问"/"返回html,在html上面点击超链接时请求…
MVC流程 原本的请求响应 结构: 视图: from flask import Flask, render_template app = Flask(__name__) @app.route("/books/")def book_list(): return render_template('book_list.html') if __name__ == '__main__': app.run(debug=True) html <!DOCTYPE html><html…
bootstrap列表 引入bootstrap标签 原本的效果 水平显示 bootstrap列表 列表组合框 在组合框后面加备注 突出显示 a标签列表 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>bootstrap布局</title> <!--网页源数据跨平台兼容做一些说明--> <me…
标签内插入 标签外插入 给标签加标签 !DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>元素和标签插入</title> <script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script><…
循着Swing的旧例,JavaFX仍然提供了三种文本输入框,分别是单行输入框TextField.密码输入框PasswordField.多行输入框TextArea.这些输入框都由抽象类TextInputControl派生而来,因此拥有共同的编辑方法,常用的主要有下列两个:setEditable:设置输入框能否编辑.为true表示能够编辑,为false表示不能编辑.setPromptText:设置输入框的提示语,用来提示用户可以输入什么样的文本.文本输入框与文本标签的区别在于,输入框内的文字允许编辑…
可以在html的head里面加一些说明 <meta http-equiv="X-UA-Compatible" content="IE=edge"><!--网页源数据跨平台兼容做一些说明--> <meta name="viewport" content="width=device-width, initial-scale=1"><!--跨屏自适应说明--> 引入bootstrap和…
jquery对元素操作,获取/替换文本(.text()).html(.html()).属性(.attr()).值(.val()) html代码 text() 根据标签获取文本值 同一个标签下筛选明细 最后一个元素 第一个元素 替换文本 html 获取html 替换html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>…
一.管道 概念 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信. 先画一幅图帮助大家理解下管道的基本原理 现有2个进程A和B,他们都在内存中开辟了空间,那么我们在内存中再开辟一个空间C,作用是连接这两个进程的.对于进程来说内存空间是可以共享的(任何一个进程都可以使用内存,内存当中的空间是用地址来标记的,我们通过查找某一个地址就能找到这个内存)A进程可以不断的向C空间输送东西,B进程可以不断的从C空间读取东西,这…
# 配置ueditor上传文件到七牛UEDITOR_UPLOAD_TO_QINIU = True # 设置为True是,视为开始把图片传到七牛储存,本地不储存UEDITOR_QINIU_ACCESS_KEY = ''UEDITOR_QINIU_SECRET_KEY = ''UEDITOR_QINIU_BUCKET_NAME = '' # 空间UEDITOR_QINIU_DOMAIN = '' # 域名 调整模型,加上与用创建户的映射关系 确认两件事,1.post表内的数据为空,2.关联表的字符集…
在查询的时候是使用ajax进行请求的 目录结构 personal.models from datetime import datetimefrom flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Department(db.Model): """ 部门 """ __tablename__ = 'department' # primary_key=True:主键, autoinc…
有些情况需要请求和刷新部分资源,但是又不希望整个页面都刷新,这个时候就需要用ajax来处理,即页面的某一部分触发请求和刷新内容 准备两个视图和html from flask import Flask, render_template, request app = Flask(__name__, static_url_path='') @app.route('/')def index(): return 'hello world!' @app.route('/content/')def text_…
使用WTForms表单验证,可以在数据建模时就设置验证信息和错误提示 创建模型时,设置验证内容,如必填.格式.长度 from flask_wtf import Formfrom wtforms import StringField, PasswordField, BooleanFieldfrom wtforms import validators class UserRegForm(Form): username = StringField('用户名', [validators.DataRequ…
WTForms主要是两个功能:1.生成HTML标签  2.对数据格式进行验证 官网:https://wtforms.readthedocs.io/en/stable/ 这篇介绍用wtform生成html标签,前端只需要框架,元素使用wtform自动生成 安装: 使用wtform重新建模和写前端 from flask_wtf import Formimport wtforms class EmployeeForm(Form): name = wtforms.StringField("姓名"…
实现在页面上点击展示页就展示内容,点击新增页就触发新增功能 项目结构 admin.__init__ from flask import Blueprint admin = Blueprint('admin', __name__) # 声明蓝图 # 把蓝图下的视图导进来注册到蓝图from admin.views import * admin.add_url_rule('/emp-list/', view_func=EmployeelListView.as_view('emp_list')) # 展…
在上一篇的基础上,插入数据 查询 Department.query.all() # 用表对象查db.session.query(Department).all() # 用db对象查 查询前两条,直接python截取前两条数据 排序 默认升序:order_by(排序的字段名) 倒序:从sqlalchemy导入desc 查询单个指定字段 查询多个指定字段 只用一个变量接收多个查询结果的时候,SQLAlchemy默认用namedtuple进行命名处理 namedtuple结构: 别名:label(别名…
flask-SQLAlchemy是在原生SQLAlchemy的基础之上做了一层封装,安装flask-SQLAlchemy会自动安装SQLAlchemy 安装 传统的sql建表建字段 通过flask-SQLAlchemy建表建字段 用法:声明和初始化一系列的配置 flask-SQLAlchemy建表建字段 db.String() 整形db.Integer() 字符串db.TEXT() 文本db.DateTime() 日期时间db.Float() 浮点db.Boolean() 布尔db.Pickle…
可以使用flask.make_response构造自定义响应信息 构造一个响应信息为文本,状态码为404 响应 响应数据为json,状态码为200 返回html # coding:utf-8from flask import Flask, make_response, render_templateimport json app = Flask(__name__) @app.route("/rp/")def send_response(): """ 构造响…
前提:已装好python3.4+且环境可正常运行 一:手动搭建: 准备好一个工作目录 管理员运行cmd,进入到准备的目录里面 执行命令:python -m venv 虚拟环境名 激活虚拟环境(在venvname外执行):venvname\scripts\activate 运行python,这个时候运行的就是虚拟环境的python了 退出虚拟环境(在venvname外执行):venvname\scripts\deactivate 二:pycharm自动搭建 新建工程时,选择创建为虚拟环境 创建完后…
bootstrap按钮 引入bootstrap和jquery 普通按钮和bootstrap风格按钮 调整大小 块级按钮 禁用按钮 disabled 按钮分组 分页按钮…
bootstrap图片 引入bootstrap 原版的图片 bootstrap处理后的: 圆角.圆形.缩略图 自适应窗口…