• Flask 知识点



    app.config['JSON_AS_ASCII'] = False #中文转换
    @app.route('/user/<user>')动态路由,通过函数传参
    jsonify() 转换成页面能看懂得json字符串
    redirct('') 跳转路由地址
    redirct(url_for(函数名)) 跳转函数名
    abort(404) 抛出异常
    '{}'.format(函数) 格式化格式 动态传参

    max_age = 3600 设置过期时间 秒
    ck = make_response() 生成一个复杂返回存储给浏览器页面
    ck.set_cookie() 存储到cookie里
    user = request.cookies.get('user_name') 请求获取cookies中的数据
    app.secret_key = '1811' 密钥
    session['user_id'] = id 存储到sessio中
    user = session.get('user_id') 获取session中的数据
    *
    rs = jsonify(msg) 改为utf8的标识,显示中文
    rs.headers['Conten-Type'] = 'application/json;charset=utf-8'
    *
    **
    from flask_script import Manager
    manage = Manager(app)
    manage.run() 在黑窗口中跑py文件
    python 文件名.py runserver *--host ip地址 --port 端口号*
    **

    render_template(html.html) 指定模板名
    app=Flask(__name__,template_folder='../templates') 指定路径位置 py文件必须与templates平级
    | 装饰器
    {% filter () %} 可修改这中间的所有形态 {% endfilter %}
    {% if %}_{% elif %}_{% else %}_{% endif %} 判断格式,又开始结束
    {% for %}_{% endfor %} for循环
    {{ loop.index }} 序号,从1开始 加0从0开始

    {% extends '父模板名.html' %} 指定子模板继承父
    {% block (名) %} {% endblock %} 模板继承部分
    {% include '父模板名.html' %} 包含就是把网页整体拿过来
    {% for i in get_flashed_messages() %} 模板中闪现
    flash() py中闪现
    <script> alert('{{变量名}}') </script> 弹框输出

    from flask_sqlalchemy import SQLAlchemy 导包连接数据库
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:@127.0.0.1:3306/book'
    数据库连接 XXX : //用户名 : 密码: @数据库IP : 端口/库名
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
    动态追踪修改设置,如未设置只会提醒警告
    app.config['SQLALCHEMY_ECHO'] = True 查询时显示原始SQL语句
    db = SQLAlchemy(app) db用来操作数据库,并把自定义模型类关联
    class Author(db.Model): db.Model 调用db
    __tablename__ = 'author' 修改表名
    id = db.Column(db.Integer) 建字段
    db.create_all() 创建数据库表
    db.drop_all() 删除数据库表
    books = db.relationship('Books类名',backref = '自表名author',lazy = 'dynamic')
    relationship 建立关系 backref=''反向查找 lazy = 'dynamic 动态加载
    def __str__(self): return str(self.id) + '|' + self.name 转换成字符串
    book_list = db.session.execute('select * from books') 支持原生sql语句 循环遍历
    a1 = Author.query.all() 查看表中所有数据 query.all() query 相当于 select 循环遍历
    a2 = Author.query.filter(Author.name == '李四') 条件查询 filter 相当于 where 语句 循环遍历
    .first() 加在最后,返回查询第一条
    from sqlalchemy import and_,not_,or_ 导包 或 与 非
    a4 = Author.query.filter(and_(Author.name == '李四',Author.id == 1)).first 与 and_
    a5 = Author.query.filter(or_(Author.name == '李四',Author.id ==1)) 或 or_ 循环遍历
    a6 = Author.query.filter(not_(Author.name == '李四')) 非 not_ 循环遍历
    a7 = Author.query.filter(Author.name == '张三').first() for i in a7.books:一对多查询 正向查找,根据作者找书籍
    b1 = Books.query.filter(Books.id == 1).first() print(b1.author) 反向查找,根据书籍找作者
    对数据库中的数据有改变的语句,都要进行 db.session commit()
    a8 = Author(name='王五') db.session.add(a8) 添加一条数据
    a9 = Author() a9.name = '赵六1' db.session.add_all([a9,a10,a11]) 添加一张表 多条数据
    a12 = Author(name='刘能') b1 = Books(name='乡村爱情1') a12.books = [b1,b2,b3] db.session.add(a12) 一对多添加数据 同时添加作者和书籍
    a13 = Author.query.filter(Author.name == '刘能').first() a13.name = '赵四' 修改数据
    a14 = Author.query.filter(Author.name == '赵六1').first() db.session.delete(a14) 删除数据
    a15 = Author.query.filter(Author.name == '赵四').first() a15.books.delete() 一对多删除

    {% for message in get_flashed_messages %} 前台显示闪现内容
    post 提交方式取值 request.form.get('user')
    get 提交方式取值 request.args.get('user')
    from flask_migrate import Migrate,MigrateCommand 数据库迁移导包
    from flask_script import Manager 黑窗口导包
    migrate = Migrate(app,db) 1将数据库迁移到黑窗口中 更新数据库表结构
    manager.add_command('db',MigrateCommand) 2将数据库迁移到黑窗口中 更新数据库表结构
    数据库迁移操作顺序
    1.python 文件 db init 建文件夹migrations
    2.python 文件 db migrate -m"版本名(注释)"
    3.python 文件 db upgrade 然后观察表结构
    主表:cascade='all, delete-orphan', passive_deletes=True
    子表: ondelete='CASCADE' 关联删除

    <script src="../../static/js/jquery-3.3.1.min.js"></script> 导入jQuery
    console.log($('.one').val()) id选择器 val() 获取value值
    console.log($('#cla').val()) class选择器
    $('#one').val('123') 控件赋值
    $('#btn').click(function () { $('#one').val('修改内容') }) 按钮点击事件
    parseInt() 转换成int类型
    def to_dict(self): 转换成字典
    window.location.href='/user/login'; 前台跳转地址的方法
    colspan="6" 合并单元格 align="right" 靠右显示
    <style>ul{ list-style:none;消除黑点 }
    ul li{display:block;变块 margin-right:10px;边距 float:left;靠左}

    from modules.admin import admin_blue 导入蓝图包
    app.register_blueprint(admin_blue,url_prefix='/admin')注册蓝图,指定蓝图
    admin_blue = Blueprint('admin',__name__) 设置蓝图

    import logging 导包 日志配置
    from logging.handlers import RotatingFileHandler

    from werkzeug.security import generate_password_hash,check_password_hash 密码加密 (生成)(比较)

    上传图片的表单,需要在form中添加: enctype="multipart/form-data" method="post"
    from utils.captcha.captcha import captcha 生成验证码图片
    type='file' 上传文件
    .lower() 忽略大小写

    window. js跳转 ######

    img = request.files.get('avatar') files 获取文件

  • 相关阅读:
    项目管理
    开源视频会议bigbluebutton开发(1)——初始化安装以及配置
    oracle休系统结构
    Tomcat上安装配置Axis
    锁表头
    文件复制三种方法
    程序员技术练级攻略
    Linux (RHEL 5.4)下安装 Oracle 10g R2
    Android 学习资料收集汇总
    WAS61安装调整和应用部署.doc
  • 原文地址:https://www.cnblogs.com/wyf2019/p/10972728.html
Copyright © 2020-2023  润新知