flask 学习笔记

1. 初始化
app是Flask类的一个对象

from flask import Flask
app = Flask(__name__)

路由和视图函数

定义路由在这里插入代码片

@app.route('/')
def index():
    return '<h1>Hello World!</h1>'

如果是地址后面有可变部分,则用下面的代码定义:

@app.route('/user/<name>')
def user(name):
    return '<h1>Hello, %s!</h1>' % name

3.启动服务器

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello World!</h1>'
    
@app.route('/user/<name>')
def user(name):
    return '<h1>Hello, %s!</h1>' % name
    
if __name__ == '__main__':
    app.run(debug=True)

安装 manager启动服务器的方式

正常的启动方式 app.run(debug=True) 改成 manager.run()
引入Manager, 加上

  1. from flask.ext.script import Manager
  2. manager = Manager(app)
from flask import Flask
from flask.ext.script import Manager
app = Flask(__name__)
manager = Manager(app)
@app.route('/')
def index():
    return '<h1>Hello World!</h1>'
    
@app.route('/user/<name>')
def user(name):
    return '<h1>Hello, %s!</h1>' % name
if __name__ == '__main__':
    manager.run() 

模块名字

redirect 重定向响应是没有页面文档

from flask import redirect
     @app.route('/')
     def index():
return redirect('http://www.example.com')

abort 函数生成,用于处理错误

from flask import abort
     @app.route('/user/<id>')
     def get_user(id):
         user = load_user(id)
         if not user:
            abort(404)
return '<h1>Hello, %s</h1>' % user.name

make_response 可以返回Response对象

from flask import make_response
     @app.route('/')
     def index():
         response =make_response('<h1>This document carries a cookie!</h1>')
         response.set_cookie('answer', '42')
         return response

静态页面的模板应用

  1. render_template
  2. block
  3. extends

渲染模板 render_template

from flask import Flask
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/user/<name>')
def user(name):
    return render_template('user.html', name=name)

if __name__ == '__main__':
    app.run()

简单的模板前端判断

{% if user %}
Hello, {{ user }}!
{% else %}
Hello, Stranger!
{% endif %}

渲染数组

<ul>
{% for comment in comments %}
<li>{{ comment }}</li> {% endfor %}
</ul>

宏类似于 Python 代码中的函数

{% macro render_comment(comment) %} <li>{{ comment }}</li>
{% endmacro %}
<ul>
{% for comment in comments %}
{{ render_comment(comment) }} {% endfor %}
</ul>

基模板 block 标签定义的元素可在衍生模板中修改

<html>
     <head>
{% block head %}
<title>{% block title %}{% endblock %} - My Application</title> {% endblock %}
     </head>
     <body>
{% block body %}
{% endblock %} </body>
</html>

引用模板 super() 获取原来的内容

{% extends "base.html" %}
{% block title %}Index{% endblock %} {% block head %}
         {{ super() }}
         <style>
         </style>
{% endblock %}
{% block body %} <h1>Hello, World!</h1> 
{% endblock %}

引入 bootstrap

pip install flask-bootstrap

初始化

from flask.ext.bootstrap import Bootstrap
bootstrap = Bootstrap(app)

使用Flask-SQLAlchemy管理数据库 db对象是SQLAlchemy类的实例

from flask.ext.sqlalchemy import SQLAlchemy
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+os.path.join(basedir,'data.sqlite')
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)

定义Role和User模型,tablename是数据库中使用的表名,db.Column类构造函数的第一个参数是数据库列和模型属性的类型

class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(64),unique=True)

    def __repr__(self):
        return '<Role %r>' % self.name

class User(db.Model):
    __teblename__ = 'users'
    id = db.Column(db.Integer,primary_key=True)
    username = db.Column(db.String(64),unique=True,index=True)

    def __repr__(self):
        return '<User %r>' % self.username

表示一对多关系

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 '<Role %r>' % self.name

class User(db.Model):
    __teblename__ = 'users'
    id = db.Column(db.Integer,primary_key=True)
    username = db.Column(db.String(64),unique=True,index=True)
    role_id = db.Column(db.Integer,db.ForeignKey('roles.id'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值