python web框架flask学习总结(一)

参考了网上各个大牛的看法,最后决定学习flask框架,然后国庆期间将flask学习了一个大概并写了一个小项目,最后来做一个笔记。因为之前接触过php的web开发框架thinkphp5,所以上手flask感觉很轻松。

flask相关库的下载

主要学习了flask,flask-sqlalchemy,flask-migrate,flask-script库。题主是win10,直接在命令行进行"pip install xxx"就行。

主要内容

因为题主是来做一个总结,所以不是按照学习步骤来一个个深入,在此写一个总括。
首先一个再小的项目也离不开以下的内容。

  • 相关配置:调试,数据库等
  • 路由
  • 模型(定义),模板(继承,渲染等)
  • 与数据库有关的各种操作:增删改查,数据库的迁移等
  • 请求(GET,POST)

配置

相关配置主要放在config.py文件中,主要配置有DEBUG,数据库的连接"SQLALCHEMY_DATABASE_URI",注意是URI不是URL,总感觉这里巨坑
URI形式是

dialect+driver://username:password@host:port/database

有些参数是可选的,比如port
题主是python3,这里的配置是

DIALECT = 'mysql'
DRIVER = 'pymysql'
USERNAME = 'root'
PASSWORD = 'root'
HOST = 'localhost'
# 数据库名,要提前创建好
DATABASE = 'xxx'

SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}/{}?charset=utf8".format(
    DIALECT, DRIVER, USERNAME, PASSWORD, HOST, DATABASE)

在主文件中导入这个配置文件

import config
app.config.from_object(config)

路由

flask的路由使用Flask应用实例的route装饰器将一个URL规则绑定到 一个视图函数上

@app.route('/')
def index():
    pass
# 传参
@app.route('/user/')
def user(username):
    pass

模型

要学习flask-sqlalchemy ,首先要简单理解ORM,简单理解就是一个类对应了一张表。通常会将所有模型放在一个models.py文件中。
比如我要建一张article表,有四个字段
分别是id,title,content,create_time,分别是四种数据类型,在models.py中定义一个Article类,如下:

# 导入datetime库,因为用到了时间
from datetime import datetime
class Article(db.Model):
    # 设置表名
    __tablename__ = 'article'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(30), nullable=False)
    content = db.Column(db.Text, nullable=False)
    create_time = db.Column(db.DateTime, default=datetime.now)

对于用户表,常涉及到用户密码之类的,需要加密
这里也给出一个例子,给出一个User类

# 用来加密和解密
from werkzeug.security import generate_password_hash, check_password_hash

class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    telephone = db.Column(db.String(11), nullable=False)
    username = db.Column(db.String(50), nullable=False)
    password = db.Column(db.String(100), nullable=False)

    def __init__(self, *args, **kwargs):
        telephone = kwargs.get('telephone')
        username = kwargs.get('username')
        password = kwargs.get('password')

        self.telephone = telephone
        self.username = username
       # 加密
        self.password = generate_password_hash(password)

    # 定义验证密码的函数,如果返回True,则进行下一步操作
    def check_password(self, raw_password):
        result = check_password_hash(self.password, raw_password)
        return result

接下来的重点是一对多,以及多对多的关系定义
一个用户可以写过多篇文章
在上一个Article类中,添加

# 定义外键,
author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
# 定义关系,与User相关联,反过来User通过articles即可查询到这个用户写过的文章
author = db.relationship('User', backref=db.backref('articles'))

暂时先写到这里吧,写太多会显得很臃肿,相关函数的详细用法请直接百度或查看文档,非常感谢看到最后。

你可能感兴趣的:(python web框架flask学习总结(一))