玩了下flask,很轻量级的一个web开发框架

2020-05-09 15:47:04 浏览数 (1)

安装flask pip install flask *** #新建一个项目 #然后导入 from flask import Flask #指定app名称 app=(__name__) #指定路由 @app.route(‘/’) def index(): return(‘hello‘) if __name==’main’: app.run() flask 新建起来非常的简单,7行代码就可以搞定了 入口文件可以设置很多参数 app.run(host,port,debug,options) *** 绑定路由的方式有两种, *** 路由的装饰器绑定 @app.route(‘/’) 用add_url_rule来绑定函数 app.add_url_rule(‘/’,’hello’,hello_word) 第一个参数为路由根路由,第二个为子路由,第三个为所绑定的函数 url 路由也是很方便 和django差不多,直接用<>表示变量就好,默认是字符串,可以使整形,浮点,uuid,path, 如果在装饰器上不设置methods的话默认是get提交方式 *** 路由重定向,redirect 和django一样,不过是reverse换成了url_for了,url_for 直接指向需要的url函数名就好了 *** return redirect(url_for(‘python’)) *** flask http方法 *** 1 GET 以未加密的形式将数据发送到服务器。最常见的方法。 2 HEAD 和GET方法相同,但没有响应体。 3 POST 用于将HTML表单数据发送到服务器。POST方法接收的数据不由服务器缓存。 4 PUT 用上传的内容替换目标资源的所有当前表示。 5 DELETE 删除由URL给出的目标资源的所有当前表示。 *** 以上是规范的请求方法,当然你可以选择无视,不遵守 *** 需要用到模板文件的话可以用 *** render_template(‘index.html’,a=a) {{a}} 传递参数也非常的简单,直接传递,然后在模板文件中用模板语言调用即可 模板中可以一样的用到切片操作,很方便 语法都是和python语法一样的,非常的友好 *** 过滤器也是和django的一样的 | 后面接着过滤器名称就好 {{a}}| supper *** 如果在使用flash闪现消息的时候出现了runtimeerror错误可以是应为没加secret_key,加上就好了,就可以正常的使用flash了 这个是给flash消息加密用的 如果出现了unicodedeodeerror错误就是assic编码的问题,flash消息字符串前面加u就可以解决了 *** app.config[‘SECRET_KEY’]=’123456′ *** 用flask-wtf表单模块来创建表单并验证 *** 首先导入wtf模块 *** from flask_wtf import FlaskForm # 实现表单基类 接着导入form表单控件 from wtforms import StringField,PasswordField,SelectField,SubmitField *** 然后用一个类去继承FlaskForm *** class LoginForm(FlaskForm): username=StringField(‘用户名’) password=PasswordField(‘密码’) password2=PasswordField(‘确认密码’) submit=SubmitField(‘提交’) 接着实例化它 form=LoginForm() 然后render_template(form=form)给参数给模板就好了,然后模板中 *** 模板中是这样调用的 *** {{form.username}} 直接调用到这个控件框 {{form.username.label}} # 调用上面的控件命名 挺简单的, *** 数据库模型ORM映射 这里叫做flask_sqlalchemy *** db=SQLAlchemy(app) # 继承app名字 创建数据库的模型,继承制db class Role(db.Model): # 定义表明 __tablename__=’roles’ # 定义字段名 id=db.Column(db.Integer,primary_key=True) # 是一个字段 name=db.Column(db.String(16),unique=True) # 定义字段,用户类型只能唯一 class User(db.Model): __tablename__=’users’ id=db.Column(db.Integer,primary_key=True) name=db.Column(db.String(16),unique=True) # 用上面表的id来表示外键 role_id=db.Column(db.Integer,db.ForeignKey(‘roles.id’)) # 外键 *** orm增删改查 *** db.session.commit() 提交 db.session.delete() 删除 db.session.add() 增加 db.session.add_all() 提交所有 db.session.rollback() 数据回滚 user.name=’newname’ 更改 每次对数据库的操作都是要通过commit事务提交才能同步到数据库的 ***

0 人点赞