Python Web框架Flask

一.Flask基础

1.Flask简介

Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。

2.requirements文件使用

pytest==5.4.0
allure-pytest==2.8.15
allure-python-commons==2.8.15
pytest-rerunfailures==9.0
allure-python-commons==2.8.15
configparser==5.0.0
PyYAML==5.3.1
requests==2.23.0
requests-toolbelt==0.9.1
simplejson==3.17.0
ruamel.yaml==0.16.10

3.第一个Flask程序

#初始化
from flask import Flask
app=Flask(__name__)
#路由和视图函数
@app.route('/')
def index():
return 'Hello world'
#启动服务
if __name__=='__main__':
app.run(debug=True)

二.模板

1.一对多关系

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', lazy='dynamic')

class User(db.Model):
    __tablename__ = 'users'  
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True, index=True)
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

2.多对多关系

tb_student_course = db.Table('tb_student_course',
                             db.Column('student_id', db.Integer, db.ForeignKey('students.id')),
                             db.Column('course_id', db.Integer, db.ForeignKey('courses.id'))
                             )
class Student(db.Model):
    __tablename__ = "students"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)

    courses = db.relationship(
        'Course', 
        secondary=tb_student_course,
        backref=db.backref('students', lazy='dynamic'),
        lazy='dynamic'
    )
class Course(db.Model):
    __tablename__ = "courses"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)

3.自关联一对多

class Comment(db.Model):
    """评论"""
    __tablename__ = "comments"

    id = db.Column(db.Integer, primary_key=True)
    # 评论内容
    content = db.Column(db.Text, nullable=False)
    # 父评论id
    parent_id = db.Column(db.Integer, db.ForeignKey("comments.id"))
    parent = db.relationship(
        "Comment", 
        remote_side=[id],
        backref=db.backref('childs', lazy='dynamic')
)

三.表单

  1. 创建forms.py
from flask_wtf import FlaskForm
from wtforms import StringField,TextAreaField,SubmitField,SelectField
from wtforms.validators import DataRequired
 
class NewsForm(FlaskForm):
    title = StringField(label='新闻标题',validators=[DataRequired("请输入标题")],description="请输入标题",render_kw={"required":"required"})
    content = TextAreaField(label='新闻内容',validators=[DataRequired("请输入内容")],description="请输入内容",render_kw={"required":"required","class":"form-control"})
    types = SelectField(label='新闻类型',choices=[('首页','首页'),('动漫周边','动漫周边'),('军事要闻','军事要闻'),('每日上海','每日上海'),('图片','图片')])
    image = StringField(label='新闻图片',description="请输入图片地址",render_kw={"required":"required","class":"form-control"})
    submit = SubmitField('提交')

四.数据库

1.数据库的基本操作

创建数据库 create database [数据库名];
查看数据库 show databases;
指定数据库 use [数据库名];
删除数据库 drop database [数据库名] (慎用);

插入操作:

全列插入:insert into [表名] values (对应的列数据);
指定列插入:insert into [表名] (若干个指定列) values (对应的列数据) ;没有被插入的列会默认被填充为NULL;
一次插入多条记录:insert into [表名] values (对应的列数据),(对应的列数据);

修改:

update [表名] set [列名] = [修改的值],[列名] = [修改的值] where 子句

删除:

delete from [表名] [where…][order by…][limit…]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值