flask 动手写的接口平台
笔者做的是测试,在群里经常有人讨论,怎么和开发对接怎么难,怎么测接口比较难,开发不愿因写文档等等,是啊,我感觉也是这样,沟通,还有我们应该怎样去学习,去扩充自己,让自己不再受开发所左右,
笔者就像试图用flask去做这么一个东西吧,所有的数据什么保存到数据库,按照一定的规矩存放,那么我去获取数据库,展示过来就好,那么研发也不用给我写文档啥的,我直接去读取你数据库的接口东西就可以。
说就说,干就干,人生就这样。
选择Python+flask做,数据库sqlite3。
下面来看下我的目录,
数据库,forms views 视图,
数据库如下:
# encoding: utf-
'''
@author: lileilei
@file: models.py
@time: // :
'''
from app import db
import datetime
from werkzeug.security import generate_password_hash,check_password_hash
class User(db.Model):#用户表
uer_id=db.Column(db.Integer,primary_key=True,autoincrement=True)#用户id
user_name=db.Column(db.String())#用户名
password=db.Column(db.String())#用户密码
status=db.Column(db.Integer)
level=db.Column(db.Integer)
user_zhuce_date=db.Column(db.DateTime,default=datetime.datetime.now())#注册时间
user_zhuce_email=db.Column(db.String())#注册ip
user_iphone=db.Column(db.Integer)#手机号
user_qq=db.Column(db.Integer)#qq
def __repr__(self):
return '<User %r>' % self.user_name
def set_password(self, password):
self.password = generate_password_hash(password)
def check_password(self, password):
return check_password_hash(self.password, password)
class Model(db.Model):#模块
model_id=db.Column(db.Integer,primary_key=True,autoincrement=True)
model_name = db.Column(db.String())
status = db.Column(db.Integer)
class Interface(db.Model):#接口
interface_id=db.Column(db.Integer,primary_key=True,autoincrement=True)
model_id=db.Column(db.Integer,db.ForeignKey('model.model_id'))#对应模块的名字
interface_name=db.Column(db.String())#接口名字
interface_url=db.Column(db.String())#接口地址
interface_methd=db.Column(db.String())#接口请求方式
request_exam=db.Column(db.String())#请求
reposnese_exam=db.Column(db.String())#返回
stasus=db.Column(db.Integer)#状态
def __repr__(self):
return '<Interface name is :%r>'%self.interface_name
class Parameter(db.Model):
parameter_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
interface_id = db.Column(db.Integer, db.ForeignKey("interface.interface_id"))
parameter_type = db.Column(db.String())
parameter_group_id = db.Column(db.Integer)
parameter_name = db.Column(db.String())
necessary = db.Column(db.String())
type = db.Column(db.String())
default = db.Column(db.String())
remark = db.Column(db.String())
level = db.Column(db.String())
views
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from flask import render_template, redirect, session, url_for,flash,request
from app import app
from app import db
from .models import Interface, Model, User, Parameter
from .forms import LoginForm, ReguistForm,ModelForm, InterfaceForm, ParameterRequestForm, ParameterResponseForm, SubmitForm
import datetime
# 前台首页
@app.route("/", methods=["GET", "POST"])
@app.route("/index", methods=["GET", "POST"])
def index():
return render_template("index.html")
# 前台模块列表
@app.route("/font", methods=["GET", "POST"])
def front():
model_all = Model.query.all()
model_forms = []
for i in range(len(model_all)):
model_form = {"model_id": model_all[i].model_id,
"model_name": model_all[i].model_name}
model_forms.append(model_form)
return render_template("front.html",
model_forms=model_forms)
# 前台接口列表
@app.route("/front_model/<model_id>", methods=["GET", "POST"])
def front_model(model_id):
model_one = Model.query.filter_by(model_id=model_id).first()
interface_model_all = Interface.query.filter_by(model_id=model_id).all()
interface_model_forms = []
for i in range(len(interface_model_all)):
interface_model_form = {"interface_id": interface_model_all[i].interface_id,
"interface_name": interface_model_all[i].interface_name,
"interface_url": interface_model_all[i].interface_url}
interface_model_forms.append(interface_model_form)
return render_template("front_model.html",
model_id=model_id,
model_one=model_one,
interface_model_forms=interface_model_forms)
g_parameter_request = []
g_parameter_response = []
# 前台接口详情
@app.route("/front_interface/<model_id>&<interface_id>", methods=["GET", "POST"])
def front_interface(model_id, interface_id):
global g_parameter_request, g_parameter_response
model_one = Model.query.filter_by(model_id=model_id).first()
interface_model_all = Interface.query.filter_by(model_id=model_id).all()
interface_model_one = Interface.query.filter_by(interface_id=interface_id).first()
interface_model_forms = []
for i in range(len(interface_model_all)):
interface_model_form = {"interface_id": interface_model_all[i].interface_id,
"interface_name": interface_model_all[i].interface_name,
"interface_url": interface_model_all[i].interface_url}
interface_model_forms.append(interface_model_form)
parameter_request_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=10).all()
parameter_request_forms = []
for i in range(len(parameter_request_all)):
parameter_request_form = {"parameter_id": parameter_request_all[i].parameter_id,
"parameter_name": parameter_request_all[i].parameter_name,
"necessary": parameter_request_all[i].necessary,
"type": parameter_request_all[i].type,
"default": parameter_request_all[i].default,
"remark": parameter_request_all[i].remark,
"parameter_group_id": parameter_request_all[i].parameter_group_id,
"level": parameter_request_all[i].level}
parameter_request_forms.append(parameter_request_form)
parameter_response_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=20).all()
parameter_response_forms = []
for i in range(len(parameter_response_all)):
parameter_response_form = {"parameter_id": parameter_response_all[i].parameter_id,
"parameter_name": parameter_response_all[i].parameter_name,
"necessary": parameter_response_all[i].necessary,
"type": parameter_response_all[i].type,
"default": parameter_response_all[i].default,
"remark": parameter_response_all[i].remark,
"parameter_group_id": parameter_response_all[i].parameter_group_id,
"level": parameter_response_all[i].level}
parameter_response_forms.append(parameter_response_form)
g_parameter_request = [] # 全局变量、清空列表数据
g_parameter_response = [] # 全局变量、清空列表数据
n_parameter_request(parameter_request_forms, parameter_request_all[0].parameter_group_id)
n_parameter_response(parameter_response_forms,parameter_response_all[0].parameter_group_id)
return render_template("front_interface.html",
model_id=model_id,
model_one=model_one,
interface_model_forms=interface_model_forms,
interface_model_one=interface_model_one,
g_parameter_request=g_parameter_request,
g_parameter_response=g_parameter_response)
# 请求参数排序
def n_parameter_request(request, parameter_group_id):
for form in request:
if form["parameter_group_id"] == parameter_group_id:
new_parameter_group_id = form["parameter_id"]
g_parameter_request.append(form)
n_parameter_request(request, new_parameter_group_id)
return g_parameter_request
# 返回参数排序
def n_parameter_response(response, parameter_group_id):
for form in response:
if form["parameter_group_id"] == parameter_group_id:
new_parameter_group_id = form["parameter_id"]
g_parameter_response.append(form)
n_parameter_response(response, new_parameter_group_id)
return g_parameter_response
# 后台首页
@app.route("/home", methods=["GET", "POST"])
def home():
if not session.get("logged_in"):
return redirect(url_for("login"))
return render_template("home.html")
# 后台登录
@app.route("/login", methods=["GET", "POST"])
def login():
form = LoginForm()
if form.validate_on_submit():
try:
user_one = User.query.filter_by(user_name=form.username.data).first()
me=user_one.check_password(form.password.data)
if me==True and user_one.status == 1:
session["logged_in"] = True
return redirect(url_for("home"))
else:
flash('登录密码错误!请检测你的密码')
return render_template("login.html", form=form)
except AttributeError:
flash('登录fail!')
return render_template("login.html", form=form)
return render_template("login.html",
form=form)
# 后台登出
@app.route("/logout", methods=["GET", "POST"])
def logout():
session.pop("logged_in", None)
return redirect(url_for("index"))
# 模块管理
@app.route("/model", methods=["GET", "POST"])
def model():
if not session.get("logged_in"):
return redirect(url_for("login"))
model_all = Model.query.all()
model_forms = []
for i in range(len(model_all)):
model_form = {"model_id": model_all[i].model_id,
"model_name": model_all[i].model_name}
model_forms.append(model_form)
return render_template("model.html",
model_forms=model_forms)
# 新增模块
@app.route("/addmodel", methods=["GET", "POST"])
def addmodel():
if not session.get("logged_in"):
return redirect(url_for("login"))
add_model = ModelForm()
submit = SubmitForm()
if submit.validate_on_submit():
add = Model(model_name=add_model.model_name.data)
db.session.add(add)
db.session.commit()
return redirect(url_for("model"))
return render_template("addmodel.html",
add_model=add_model,
submit=submit)
# 编辑模块
@app.route("/editmodel/<model_id>", methods=["GET", "POST"])
def editmodel(model_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
model_one = Model.query.filter_by(model_id=model_id).first()
edit_model = ModelForm()
submit = SubmitForm()
if submit.validate_on_submit():
model_one.model_name = edit_model.model_name.data
db.session.commit()
return redirect(url_for("model"))
edit_model.model_name.data = model_one.model_name
return render_template("editmodel.html",
edit_model=edit_model,
submit=submit)
# 接口列表
@app.route("/interface/<model_id>")
def interface(model_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
interface_model_all = Interface.query.filter_by(model_id=model_id).all()
interface_model_forms = []
for i in range(len(interface_model_all)):
interface_model_form = {"interface_id": interface_model_all[i].interface_id,
"interface_name": interface_model_all[i].interface_name,
"interface_url": interface_model_all[i].interface_url}
interface_model_forms.append(interface_model_form)
return render_template("interface.html",
model_id=model_id,
interface_model_forms=interface_model_forms)
# 新增接口
@app.route("/addinterface/<model_id>", methods=["GET", "POST"])
def addinterface(model_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
add_interface = InterfaceForm()
submit = SubmitForm()
if submit.validate_on_submit():
add = Interface(interface_name=add_interface.interface_name.data,
model_id=model_id,
interface_url=add_interface.interface_url.data,
interface_methd=add_interface.interface_method.data,
request_exam=add_interface.request_exam.data,
reposnese_exam=add_interface.response_exam.data)
db.session.add(add)
db.session.commit()
return redirect(url_for("interface",
model_id=model_id))
return render_template("addinterface.html",
add_interface=add_interface,
model_id=model_id,
submit=submit)
# 编辑接口
@app.route("/editinterface/<model_id>&<interface_id>", methods=["GET", "POST"])
def editinterface(model_id, interface_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
interface_model_one = Interface.query.filter_by(interface_id=interface_id).first()
edit_interface_model = InterfaceForm()
submit = SubmitForm()
if submit.validate_on_submit():
interface_model_one.interface_name = edit_interface_model.interface_name.data
interface_model_one.interface_url = edit_interface_model.interface_url.data
interface_model_one.interface_methd = edit_interface_model.interface_method.data
interface_model_one.request_exam = edit_interface_model.request_exam.data
interface_model_one.response_exam = edit_interface_model.response_exam.data
db.session.commit()
return redirect(url_for("interface",
model_id=model_id))
edit_interface_model.interface_name.data = interface_model_one.interface_name
edit_interface_model.interface_url.data = interface_model_one.interface_url
edit_interface_model.interface_method.data = interface_model_one.interface_methd
edit_interface_model.request_exam.data = interface_model_one.request_exam
edit_interface_model.response_exam.data = interface_model_one.reposnese_exam
return render_template("editinterface.html",
model_id=model_id,
interface_id=interface_id,
edit_interface_model=edit_interface_model,
submit=submit)
# 请求参数列表
@app.route("/parameter_request/<model_id>&<interface_id>", methods=["GET", "POST"])
def parameter_request(model_id, interface_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
parameter_request_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=10).all()
parameter_request_forms = []
for i in range(len(parameter_request_all)):
parameter_request_form = {"parameter_id": parameter_request_all[i].parameter_id,
"parameter_name": parameter_request_all[i].parameter_name,
"necessary": parameter_request_all[i].necessary,
"type": parameter_request_all[i].type,
"default": parameter_request_all[i].default,
"remark": parameter_request_all[i].remark,
"parameter_group_id": parameter_request_all[i].parameter_group_id,
"level": parameter_request_all[i].level}
parameter_request_forms.append(parameter_request_form)
return render_template("parameter_request.html",
model_id=model_id,
interface_id=interface_id,
parameter_request_forms=parameter_request_forms)
# 新增请求参数
@app.route("/addparameter_request/<model_id>&<interface_id>", methods=["GET", "POST"])
def addparameter_request(model_id, interface_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
add_parameter_request = ParameterRequestForm()
submit = SubmitForm()
if submit.validate_on_submit():
add = Parameter(interface_id=interface_id,
parameter_type=10,
parameter_group_id=add_parameter_request.parameter_group_id.data,
parameter_name=add_parameter_request.parameter_name.data,
necessary=add_parameter_request.necessary.data,
type=add_parameter_request.type.data,
default=add_parameter_request.default.data,
remark=add_parameter_request.remark.data,
level=add_parameter_request.level.data)
db.session.add(add)
db.session.commit()
return redirect(url_for("parameter_request",
model_id=model_id,
interface_id=interface_id))
return render_template("addparameter_request.html",
add_parameter_request=add_parameter_request,
model_id=model_id,
interface_id=interface_id,
submit=submit)
# 编辑请求参数
@app.route("/editparameter_request/<model_id>&<interface_id>&<parameter_id>", methods=["GET", "POST"])
def editparameter_request(model_id, interface_id, parameter_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
parameter_request_one = Parameter.query.filter_by(parameter_id=parameter_id).first()
edit_parameter_request = ParameterRequestForm()
submit = SubmitForm()
if submit.validate_on_submit():
parameter_request_one.parameter_name = edit_parameter_request.parameter_name.data
parameter_request_one.necessary = edit_parameter_request.necessary.data
parameter_request_one.type = edit_parameter_request.type.data
parameter_request_one.default = edit_parameter_request.default.data
parameter_request_one.remark = edit_parameter_request.remark.data
parameter_request_one.parameter_group_id = edit_parameter_request.parameter_group_id.data
parameter_request_one.level = edit_parameter_request.level.data
db.session.commit()
return redirect(url_for("parameter_request",
model_id=model_id,
interface_id=interface_id))
edit_parameter_request.parameter_name.data = parameter_request_one.parameter_name
edit_parameter_request.necessary.data = parameter_request_one.necessary
edit_parameter_request.type.data = parameter_request_one.type
edit_parameter_request.default.data = parameter_request_one.default
edit_parameter_request.remark.data = parameter_request_one.remark
edit_parameter_request.parameter_group_id.data = parameter_request_one.parameter_group_id
edit_parameter_request.level.data = parameter_request_one.level
return render_template("editparameter_request.html",
model_id=model_id,
interface_id=interface_id,
parameter_id=parameter_id,
edit_parameter_request=edit_parameter_request,
submit=submit)
# 删除请求参数
@app.route("/deleteparameter_request/<model_id>&<interface_id>&<parameter_id>", methods=["GET", "POST"])
def deleteparameter_request(model_id, interface_id, parameter_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
deleteparameter_request_one = Parameter.query.filter_by(parameter_id=parameter_id).first()
db.session.delete(deleteparameter_request_one)
db.session.commit()
parameter_request_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=10).all()
parameter_request_forms = []
for i in range(len(parameter_request_all)):
parameter_request_form = {"parameter_id": parameter_request_all[i].parameter_id,
"parameter_name": parameter_request_all[i].parameter_name,
"necessary": parameter_request_all[i].necessary,
"type": parameter_request_all[i].type,
"default": parameter_request_all[i].default,
"remark": parameter_request_all[i].remark,
"parameter_group_id": parameter_request_all[i].parameter_group_id,
"level": parameter_request_all[i].level}
parameter_request_forms.append(parameter_request_form)
return render_template("parameter_request.html",
model_id=model_id,
interface_id=interface_id,
parameter_request_forms=parameter_request_forms)
# 返回参数列表
@app.route("/parameter_response/<model_id>&<interface_id>", methods=["GET", "POST"])
def parameter_response(model_id, interface_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
parameter_response_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=20).all()
parameter_response_forms = []
for i in range(len(parameter_response_all)):
parameter_response_form = {"parameter_id": parameter_response_all[i].parameter_id,
"parameter_name": parameter_response_all[i].parameter_name,
"necessary": parameter_response_all[i].necessary,
"type": parameter_response_all[i].type,
"default": parameter_response_all[i].default,
"remark": parameter_response_all[i].remark,
"parameter_group_id": parameter_response_all[i].parameter_group_id,
"level": parameter_response_all[i].level}
parameter_response_forms.append(parameter_response_form)
return render_template("parameter_response.html",
model_id=model_id,
interface_id=interface_id,
parameter_response_forms=parameter_response_forms)
# 新增返回参数
@app.route("/addparameter_response/<model_id>&<interface_id>", methods=["GET", "POST"])
def addparameter_response(model_id, interface_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
add_parameter_response = ParameterResponseForm()
submit = SubmitForm()
if submit.validate_on_submit():
add = Parameter(interface_id=interface_id,
parameter_type=20,
parameter_group_id=add_parameter_response.parameter_group_id.data,
parameter_name=add_parameter_response.parameter_name.data,
necessary=add_parameter_response.necessary.data,
type=add_parameter_response.type.data,
default=add_parameter_response.default.data,
remark=add_parameter_response.remark.data,
level=add_parameter_response.level.data)
db.session.add(add)
db.session.commit()
return redirect(url_for("parameter_response",
model_id=model_id,
interface_id=interface_id))
return render_template("addparameter_response.html",
add_parameter_response=add_parameter_response,
model_id=model_id,
interface_id=interface_id,
submit=submit)
# 编辑返回参数
@app.route("/editparameter_response/<model_id>&<interface_id>&<parameter_id>", methods=["GET", "POST"])
def editparameter_response(model_id, interface_id, parameter_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
parameter_response_one = Parameter.query.filter_by(parameter_id=parameter_id).first()
edit_parameter_response = ParameterResponseForm()
submit = SubmitForm()
if submit.validate_on_submit():
parameter_response_one.parameter_name = edit_parameter_response.parameter_name.data
parameter_response_one.necessary = edit_parameter_response.necessary.data
parameter_response_one.type = edit_parameter_response.type.data
parameter_response_one.default = edit_parameter_response.default.data
parameter_response_one.remark = edit_parameter_response.remark.data
parameter_response_one.parameter_group_id = edit_parameter_response.parameter_group_id.data
parameter_response_one.level = edit_parameter_response.level.data
db.session.commit()
return redirect(url_for("parameter_response",
model_id=model_id,
interface_id=interface_id))
edit_parameter_response.parameter_name.data = parameter_response_one.parameter_name
edit_parameter_response.necessary.data = parameter_response_one.necessary
edit_parameter_response.type.data = parameter_response_one.type
edit_parameter_response.default.data = parameter_response_one.default
edit_parameter_response.remark.data = parameter_response_one.remark
edit_parameter_response.parameter_group_id.data = parameter_response_one.parameter_group_id
edit_parameter_response.level.data = parameter_response_one.level
return render_template("editparameter_response.html",
model_id=model_id,
interface_id=interface_id,
parameter_id=parameter_id,
edit_parameter_response=edit_parameter_response,
submit=submit)
# 删除返回参数
@app.route("/deleteparameter_response/<model_id>&<interface_id>&<parameter_id>", methods=["GET", "POST"])
def deleteparameter_response(model_id, interface_id, parameter_id):
if not session.get("logged_in"):
return redirect(url_for("login"))
deleteparameter_response_one = Parameter.query.filter_by(parameter_id=parameter_id).first()
db.session.delete(deleteparameter_response_one)
db.session.commit()
parameter_response_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=20).all()
parameter_response_forms = []
for i in range(len(parameter_response_all)):
parameter_response_form = {"parameter_id": parameter_response_all[i].parameter_id,
"parameter_name": parameter_response_all[i].parameter_name,
"necessary": parameter_response_all[i].necessary,
"type": parameter_response_all[i].type,
"default": parameter_response_all[i].default,
"remark": parameter_response_all[i].remark,
"parameter_group_id": parameter_response_all[i].parameter_group_id,
"level": parameter_response_all[i].level}
parameter_response_forms.append(parameter_response_form)
return render_template("parameter_response.html",
model_id=model_id,
interface_id=interface_id,
parameter_response_forms=parameter_response_forms)
# 用户管理
@app.route("/users", methods=["GET", "POST"])
def user():
if not session.get("logged_in"):
return redirect(url_for("login"))
user_all = User.query.filter_by(status=1).all()
user_forms = []
for i in range(len(user_all)):
user_form = {"user_id": user_all[i].uer_id,
"user_name": user_all[i].user_name,
"password": user_all[i].password[:30],
"status": user_all[i].status,
"level": user_all[i].level,
"user_zhuce_date": user_all[i].user_zhuce_date,
"user_zhuce_email": user_all[i].user_zhuce_email,
"user_iphone": user_all[i].user_iphone,
"user_qq": user_all[i].user_qq
}
user_forms.append(user_form)
return render_template("user_admin.html",
user_forms=user_forms)
#注册
@app.route('/register',methods=['GET','POST'])
def registser():
form = ReguistForm()
if form.validate_on_submit():
user=form.user_name.data
me=User.query.filter_by(user_name=user).first()
if me:
flash('用户名已经存在!')
return render_template('regist.html',form=form)
if form.que_password.data != form.password.data:
flash(' 确认密码是否一致!')
return render_template('regist.html',form=form)
passw=form.password.data
print(passw)
add=User(
user_name=form.user_name.data,
status=1,
user_zhuce_email=form.email.data,
user_iphone=form.iphone.data,
user_qq=form.qq.data,
user_zhuce_date=datetime.datetime.now()
)
add.set_password(password=passw)
db.session.add(add)
db.session.commit()
return redirect(url_for('login'))
return render_template("regist.html",
form=form)
#删除用户
@app.route('/delete/<user_name>',methods=['GET','POST'])
def delete(user_name):
if not session.get("logged_in"):
return redirect(url_for("login"))
delete_user=User.query.filter_by(user_name=user_name).first()
db.session.delete(delete_user)
db.session.commit()
user_all = User.query.filter_by(status=1).all()
user_forms = []
for i in range(len(user_all)):
user_form = {"user_id": user_all[i].uer_id,
"user_name": user_all[i].user_name,
"password": user_all[i].password[:30],
"status": user_all[i].status,
"level": user_all[i].level,
"user_zhuce_date": user_all[i].user_zhuce_date,
"user_zhuce_email": user_all[i].user_zhuce_email,
"user_iphone": user_all[i].user_iphone,
"user_qq": user_all[i].user_qq
}
user_forms.append(user_form)
return render_template("user_admin.html",
user_forms=user_forms)
forms
#!/usr/bin/env python
# -*- coding: utf-8 -*- from flask_wtf import Form
from wtforms import StringField, TextField, PasswordField, FormField, SubmitField, FieldList, IntegerField
from wtforms.validators import Required, DataRequired class LoginForm(Form):
username = StringField("登陆名", validators=[Required()])
password = PasswordField("密码", validators=[Required()]) class ModelForm(Form):
model_name = StringField("中文名称", validators=[Required()]) class InterfaceForm(Form):
interface_name = StringField("接口名称", validators=[Required()])
interface_url = StringField("接口地址", validators=[Required()])
interface_method = StringField("接口方法", validators=[Required()])
request_exam = TextField("请求示例", validators=[Required()])
response_exam = TextField("返回示例", validators=[Required()]) class ParameterRequestForm(Form):
parameter_group_id = StringField("从属", validators=[Required()])
parameter_name = StringField("参数名称", validators=[Required()])
necessary = StringField("是否必须", validators=[Required()])
type = StringField("类型", validators=[Required()])
default = StringField("默认值", validators=[Required()])
remark = StringField("备注", validators=[Required()])
level = StringField("层级", validators=[Required()]) class ParameterResponseForm(Form):
parameter_group_id = StringField("从属", validators=[Required()])
parameter_name = StringField("参数名称", validators=[Required()])
necessary = StringField("是否必须", validators=[Required()])
type = StringField("类型", validators=[Required()])
default = StringField("示例", validators=[Required()])
remark = StringField("描述", validators=[Required()])
level = StringField("层级", validators=[Required()]) class SubmitForm(Form):
submit = SubmitField("保存") class ReguistForm(Form):#注册
user_name=StringField('用户名',validators=[Required()])
password=PasswordField('密码',validators=[Required()])
que_password=PasswordField('密码',validators=[Required()])
iphone=IntegerField('手机号',validators=[Required()])
qq=IntegerField('qq号',validators=[Required()])
email=StringField('邮箱',validators=[Required()])
效果图
flask 动手写的接口平台的更多相关文章
- 自己动手写CPU之第四阶段(3)——MIPS编译环境的建立
将陆续上传本人写的新书<自己动手写CPU>(尚未出版).今天是第13篇.我尽量每周四篇 4.4 MIPS编译环境的建立 OpenMIPS处理器在设计的时候就计划与MIPS32指令集架构兼容 ...
- 用 Flask 来写个轻博客 (32) — 使用 Flask-RESTful 来构建 RESTful API 之一
目录 目录 前文列表 扩展阅读 RESTful API REST 原则 无状态原则 面向资源 RESTful API 的优势 REST 约束 前文列表 用 Flask 来写个轻博客 (1) - 创建项 ...
- 【原创】自己动手写工具----XSmartNote [Beta 3.0]
一.前面的话 在动笔之前,一直很纠结到底要不要继续完成这个工具,因为上次给它码代码还是一年多之前的事情,参考自己动手写工具----XSmartNote [Beta 2.0],这篇博文里,很多园友提出了 ...
- 【转】自己动手写SC语言编译器
自序 编译原理与技术的一整套理论在整个计算机科学领域占有相当重要的地位,学习它对程序设计人员有很大的帮助.我们考究历史会发现那些人人称颂的程序设 计大师都是编译领域的高手,像写出BASIC语言的BIL ...
- 自己动手写CPU之第九阶段(8)——MIPS32中的LL、SC指令说明
将陆续上传新书<自己动手写CPU>,今天是第47篇. 9.7 ll.sc指令实现思路 9.7.1 实现思路 这2条指令都涉及到訪问链接状态位LLbit,能够将LLbit当做寄存器处理,ll ...
- 自己动手写CPU之第七阶段(7)——乘累加指令的实现
将陆续上传本人写的新书<自己动手写CPU>.今天是第30篇.我尽量每周四篇 亚马逊的销售地址例如以下.欢迎大家围观呵! http://www.amazon.cn/dp/b00mqkrlg8 ...
- 自己动手写处理器之第四阶段(1)——第一条指令ori的实现
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第11篇,我尽量每周四篇 第4章 第一条指令ori的实现 前面几章介绍了非常多预备知识,也描绘了即将要实现的OpenMIPS处 ...
- 自己动手写了第三阶段的处理器——教学OpenMIPS处理器蓝图
我们会继续上传新书<自己动手写处理器>(未公布).今天是第十条.我每星期试试4 从本章開始将一步一步地实现教学版OpenMIPS处理器.本章给出了教学版OpenMIPS的系统蓝图,首先介绍 ...
- 自己动手写CPU之第六阶段(2)——移动操作指令实现思路
将陆续上传本人写的新书<自己动手写CPU>(尚未出版),今天是第21篇,我尽量每周四篇 6.2 移动操作指令实现思路 6.2.1 实现思路 这6条移动操作指令能够分为两类:一类是不涉及特殊 ...
随机推荐
- 企业级缓存系统varnish应用
场景 随着公司业务快速发展,公司的电子商务平台已经聚集了很多的忠实粉丝,公司也拿到了投资,这时老板想通过一场类似双十一的活动,进行一场大的促销,届时会有非常多的粉丝访问网站,你的总监与市场部门开完会后 ...
- 小白关于python 对象和内存的关系的一些感悟和疑惑,望大神指教
首先你输入了一个字符串,这个字符串是有大小的,电脑将其放在内存中,自动给其一个起始指针指向这个字符串的首位置,然后,你将这个字符串赋值给一个变量,这个对象又在内存中开辟出一个空间,这个变量会自动连接这 ...
- Nova计算节点安装配置
Nova计算节点安装配置 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ## Nova计算节点安装配置 #基本配置 ...
- Spring Cloud 之 Feign
新建Spring Boot工程,命名为feign 1.pom.xml添加依赖 <?xml version="1.0" encoding="UTF-8"?& ...
- linux工作中遇到的问题总结---更新中
今天这个,严格来说不算一篇文章,我只想把我工作中遇到的问题分享给大家,让大家少犯错误. 1.安装rmp包时出现错误 :header V3 DSA signature: nokey ,key id .. ...
- pl/sql中if的用法
/*判断用户从键盘输入的数字1.如何使用if语句2.接收一个键盘输入(字符串)*/set serveroutput on--接收一个键盘输入--num:一个地址值:含义:在该地址上保存了输入的值acc ...
- LDA数学八卦笔记(一)Gamma函数
Technorati Tags: LDA主题模型
- 栈和队列的java简单实现
今天看了一本书<啊哈 算法>,书的内容不多,一共两章,第一章是常见的排序算法包括桶排序.冒泡排序和快速排序,这些事基础的排序算法网上有很多资料说明,这里主要说第二章栈,对列,链表,书上使用 ...
- [C#]使用IFormattable接口来实现字符串格式化
本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 开发工具:VS2017 语言:C# DotNet版本:.Net FrameWork 4.0及以 ...
- Spark之搜狗日志查询实战
1.下载搜狗日志文件: 地址:http://www.sogou.com/labs/resource/chkreg.php 2.利用WinSCP等工具将文件上传至集群. 3.创建文件夹,存放数据: mk ...