美文网首页
flask开发笔记

flask开发笔记

作者: 静_谷 | 来源:发表于2018-07-07 21:56 被阅读0次

    基于网易云课堂上的教程
    更新ing
    不适合新手入门

    虚拟环境

    • 安装虚拟环境
      pip install virtualenv
    • 新建环境
      virtualenv [name]
    • 激活环境
      在进入虚拟环境目录下Scripts文件夹后
      activate
    • 退出环境
      在进入虚拟环境目录下Scripts文件夹后
      deactivate

    Debug模式

    • 开启
      app.run(debug=Ture)
    • 关闭
      app.run(debug=False)

    配置文件

    新建一个config.py

    #encoding utf-8
    
    DEBUG = Ture
    

    然后在主程序里面导入

    import config
    

    最后应用

    app.config.from_object(config)
    

    url传入参数

    @app.route('/article/<id>')
    def article(id):
      return u"%s" % id
    

    url反转

    from flask import url_for
    #
    url_for("article", id="123")
    # return /article/123
    

    重定义向

    from flask import redirect
    #
    return redirect(url_for("login"))
    return redirect("/login")
    

    模板

    template文件下新建一个index.html

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>Hello, {{ name }}</h1>
        <p>e-mail:{{ email }}</p>
    </body>
    </html>
    
    #encoding: utf-8
    
    from flask import Flask, render_template
    import config
    
    app = Flask(__name__)
    app.config.from_object(config)
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    @app.route('/user/<name>/<email>')
    def name(name,email):
        context={
            'name':name,
            'email':email
        }
        return render_template('index.html', **context)
        # = return render_template('index.html', name=name, email=email)
    
    if __name__ == '__main__':
        app.run()
    

    jinjia2语法

    模板继承

    {% extends 'base.html' %}
    
    {% block main %}
    {{ super() }}
    {% endblock %}
    

    flash

    使用了bootstrap样式

    {% with messages = get_flashed_messages() %}
        {% if messages %}
        {% for message in messages %}
            <div class="alert alert-warning">
                <button type="button" class="close" data-dismiss="alert"> &times;</button>
                {{ message }}
            </div>
        {% endfor %}
        {% endif %}
    {% endwith %}
    

    加载静态文件

    url_for('static', filename='css/base,css')
    

    MySQL数据库

    进入MySQL 5.7 Command Line Client - Unicode输入密码后

    • 创建
      create database [databaseName] charset utf8;
    • 切换数据库
      use [databaseName]
    • 查看
      show tables
      desc [tableName]
      select * from [tableName]
    • 配置
    DIALECT = 'mysql'
    DRIVER = 'mysqldb'
    USERNAME = 'root'
    PASSWORD = 'root'
    HOST = '127.0.0.1'
    PORT = '3306'
    DATABASE = 'db_demo1'
    
    SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    

    模型操作

    • 创建模型
      Example:
    class User(db.Model):
        __tablename__='user'
        id = db.Column(db.Integer, primary_key=True, autoincrement=True)
        username = db.Column(db.String(100), nullable=False)
        pw = db.Column(db.String(100), nullable=False)
        email = db.Column(db.String(100), nullable=False, unique=True)
    
        def __repr__(self):
            return '<User %r>' % self.username
    
    • 提交
      db.session.commit()
    • 添加
      db.session.add()
    • 删除
      db.session.delete()
    • 创建数据库
      db.create_all()
    • 删除所有数据
      db.drop_all()

    相关文章

      网友评论

          本文标题:flask开发笔记

          本文链接:https://www.haomeiwen.com/subject/kccnuftx.html