# flask2 **Repository Path**: hcfox/flask2 ## Basic Information - **Project Name**: flask2 - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2016-06-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #flask2 ## 安装 1. ```sudo apt-get install python-virtualenv``` ``` virtaulenv venv ``` 2. ``` source ~/.venv/python3.5/bin/activiate ``` 激活py3.5环境 3. ``` pip install flask ``` 安装flask 4. jinja2 模板 在controller里面通过 ``` render_template("模板文件",key=value) ``` 渲染模板 模板默认在templates目录中 5. Bootstrap ``` pip install flask-bootstrap ``` 引用 ``` from flask.ext.bootstrap import Bootstrap ``` 引用 ``` app = Flask(__name__) bootstrap = Bootstrap(app) ``` 页面中通过模板继承的方式使用 ``` {% extends "bootstrap/base.html" %} {% block content %}
{% for message in get_flashed_messages()%}
{{ message }}
{% endfor %}
{% block page_content %}{% endblock %}
{% endblock %} ``` 可以自定义自己的base.html并继承自bootstrap的base.html 需要加入自定义的js文件可以这样 ``` { % block scripts % } {{ super() }} { % endblock % } ``` 页面中通过url_for辅助函数生成链接地址,或者引用静态文件 ``` { % block head % } {{ super() }} { % endblock % } ``` 6. Moment时间插件 ``` pip install flask-moment ``` 应用 ``` from flask.ext.moment import Moment moment = Moment(app) ``` 页面中加入moment脚本 ``` {% block scripts %} {{super()}} {{ moment.include_moment() }} {% endblock %} ``` 使用 ```

本地时间 {{ moment(current_time).format('LLL') }}

距离 {{ moment(current_time).fromNow(refresh=True) }}

``` 7. 表单 ``` pip install flask-wtf ``` 配置 ``` app.config['SECRET_KEY'] = 'hard to guess string' ``` 表单类 ``` class NameForm(Form): name = StringField('你的姓名',validators = [ Required()]) submit = SubmitField('提交') ``` 使用 ``` @app.route('/',methods=['GET','POST']) def index(): name = None form = NameForm() if form.validate_on_submit(): old_name = session.get('name') if old_name is not None and old_name != form.name.data: ``` 8. 重定向 ``` redirect(url_for('index')) ``` 9. Flash消息 ``` from flask import Flask, flash ``` controller类中使用 ``` flash('Looks like you have changed your name!') ``` 页面中显示 ``` {% for message in get_flashed_messages()%}
{{ message }}
{% endfor %} ``` 10. 数据库 ``` pip install flask-sqlalchemy ``` 系统需要安装mysql 驱动 ``` apt-get install python-msyql ``` 配置 ``` app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:1@127.0.0.1/test' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True app.config['SECRET_KEY'] = 'secret' db = SQLAlchemy(app) ``` 定义映射类 ``` class Role(db.Model): __tablename__ = 'roles' id = db.Column(db.Integer,primary_key=True) name = db.Column(db.String(64),unique=True) users = db.relationship('User',backref='role') def __repr__(self): return '' % self.name ``` 定义完模型可以可以进入ipython,进行数据库的建立和操作 ``` >>> from hello import db >>> db.create_all() >>> from hello import Role, User >>> admin_role = Role(name='Admin') >>> db.session.add(admin_role) >>> db.session.commit() >>> user_role = Role.query.filter_by(name='User').first() ``` 11. Git更新学习 - 在另外的电脑上 ``` git clone https://git.oschina.net/hcfox/flask2.git ``` 下载,并 ``` cd flask2 ``` 进入相应的目录 - 修改完成后通过 ``` git commit -m "备注" . ``` 的方式,. 即代表当前目录以及所有子目录 - 最后提交到服务器 ``` git push https://git.oschina.net/hcfox/flask2.git master ```