flask admin学习记录

flask admin是flask框架中一个非常好用的后台管理框架,但是由于文档内容太少,经常遇到问题无法解决,这里记录一下

一简单的使用

from flask import Flask
from flask_admin import Admin
# csrf
from flask_admin.form import SecureForm
from flask_babelex import Babel
# 文件上传
# from flask_admin import form as admin_form

from wtforms import form, fields, validators

from flask_admin.contrib.pymongo import ModelView
from pymongo import MongoClient

from werkzeug.security import check_password_hash

# 文件上传
# from flask_admin.contrib.fileadmin import FileAdmin
# import os.path as op

# file_path = op.join(op.dirname(__file__), 'static')


app = Flask(__name__)
babel = Babel(app)
app.config['SECRET_KEY'] = 'xxx'
app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN'
client = MongoClient(host='xxx’, port=27017)
db = client.test
db.authenticate('xxx', 'xxx')
Rentals = db.rentals

class RentalsForm(form.Form): city = fields.StringField(u'城市')

class RentalsView(ModelView): column_labels = dict( _id = u'编号', city = u'城市', ) form_base_class = SecureForm # 文件上传 # form_extra_fields = { # 'picture': admin_form.ImageUploadField(label=u'照片', base_path=file_path) # } column_list = ['_id', 'city'] form = RentalsForm

if __name__ == '__main__': admin = Admin(app, name=u'后台管理系统') admin.add_view(RentalsView(Rentals, name=u'个人房源')) app.run

二filed.FieldList,field.FormField的使用

在使用数据库mongodb的时候会遇到某个字段是个列表

这时候就可以使用field.FieldList

features = fields.FieldList(unbound_field=fields.StringField(u'配置'), label=u'房屋配置', min_entries=10)

这样编辑的时候就会有10个配置可以编辑,修改min_entries可以增加编辑的个数

保存之后是个列表

但是如果该字段是个列表,列表元素都是字典怎么办

这时候可以搭配FormField来使用

class PictureForm(form.Form):
    id = fields.StringField(u'编号')
    description = fields.StringField(u'描述')
    url = fields.StringField(u'url路径')
    picture = fields.FieldList(unbound_field=fields.FormField(PictureForm), label=u'图片', min_entries=10)

搞定了

原文地址:https://www.cnblogs.com/lgh344902118/p/7307469.html