| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [View Raw Code] [Original HTTPS Page] |
引用
from flask import Flask
from flask_script import Manager
app = Flask(__name__)
# 管理 app
manager = Manager(app)
"""
Linux 运行时 可以直接 python xxx.py runserver
"""实例
from flask import Flask
from flask_script import Manager, Command
app = Flask(__name__)
manager = Manager(app)
# 增加命令 hello
class Hello(Command):
def run(self):
print('hello, world')
class Runserver(Command):
def run(self):
app.run(port=8000)
# 添加命令, 执行 python xxx.py hello 输出 hello world
manager.add_command('hello', Hello)
# 添加命令, 执行 python xxx.py runserver8000 项目开始监听 8000 端口
manager.add_command('runserver8000', Runserver)
@app.route('/index/')
def index():
return "你看"
if __name__ == '__main__':
manager.run()__init__.py : 项目初始化
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db = SQLAlchemy()
# 实例化
migrate = Migrate()
def creeateApp(obj):
app = Flask(__name__)
app.config.from_object(obj)
# 惰性加载
db.init_app(app)
migrate.init_app(app, db)
from blueprintproject.app import bp
from blueprintproject.user import user_bp
app.register_blueprint('bp', url_prefix='/app')
app.register_blueprint('user_bp', url_prefix='/user')
return appmain.py
from blueprintproject import creatApp
from config import Config
from flask_script import Manager, Command
from flask_migrate import MigrateCommand
app = createApp(Config)
# 管理 app
manager = Manger(app)
# 增加命令 hello
class Hello(Command):
def run(self):
print('hello, world')
class Runserver(Command):
def run(self):
app.run(port=8000)
# 添加命令, 执行 python xxx.py hello 输出 hello world
manager.add_command('hello', Hello)
# 添加命令, 执行 python xxx.py runserver8000 项目开始监听 8000 端口
manager.add_command('runserver8000', Runserver)
# 安装命令
manager.add_command('db', MigrateCommand)
@app.route('/index/')
def index():
return "你看"
if __name__ == '__main__':
manager.run()创建 forms.py
from flask_wtf import FlaskForm
import wtforms
# 校验器
from wtforms import validators
from wtforms import ValidationError
class UserForm(FlaskForm):
# 对填写的数据进行校验
name = wtforms.StringField(
label="账号",
# 校验规则
validators=[
validators.Email(message="必须是邮箱"),
]
)
password = wtforms.PasswordField(label="密码")视图 : 实例化 Form 类, 将 Form 类对象渲染到模板中
模板页面可以使用 Form 类提供的样式,可以完成部分的前端校验
注意 : 下发 csftoken
from flask import render_template, request
from .forms import UserForm
@user_bl.route('/register/', method=['GET', 'POST'])
def register():
userform = UserForm()
if request.method == 'POST':
data = request.form
print(data)
return render_template('register.html', **locals())后端校验
使用 WTF 提供的方法进行后端校验
页面中使用 Form 提供样式
将数据提交到视图,进行后端校验
常用的表单字段
| 字段 | 说明 |
|---|---|
| StringField | 字符串 |
| IntergerField | 整型 |
| TextAreaField | 文本 |
| PasswordField | 密码 |
| HiddenField | 隐藏域 |
| DateField | Datatime.data 格式 年月日 |
| DateTimeField | Datatime.datatime 格式 年月日时分秒 |
| FloatField | 小数 |
| RadioField | 单选 |
| SelectField | 下拉 |
| FileField | 文件 |
| SubmiField | 提交 |
校验规则
| 方法 | 说明 |
|---|---|
| 邮件校验 | |
| EqualTo | 比较两个字段的值,常用于密码比较 |
| IPAddress | Ipv4 格式的 IP 地址 |
| length | 长度 |
| NumnerRange | 数字范围 |
| DataRequired | 空值检查 |
| Url | 检查是否符合 url 格式 |
| AnyOf | 确保输入值在指定范围 |
| NoneOf | 确保输入值不在指定范围 |
| Back | FazBrowse Home | New Git URL |