繁体   English   中英

Flask-Admin - 自定义视图

[英]Flask-Admin - Customizing views

我正在使用Flask和pyMongo开发一个web应用程序,我最近开始集成Flask-Admin模块(1.0.4),给出了新的mongodb支持。

使用ModelViews时,一切都很顺畅,但是当涉及到BaseView的子类化时,我根本无法使它工作。

这是我的设置:


user_view = Admin(app, name='User stuff', url="/user", endpoint="user")


class ProfileForm(wtf.Form):
    username = wtf.TextField('Username', [wtf.Required()])
    name = wtf.TextField('Name', [wtf.Required()])


class Profile(BaseView):
    @expose('/', methods=('GET', 'POST'))
    def profile(self):
        user = User(uid) # gets the user's data from DB
        form = ProfileForm(request.form, obj=user)
        if form.validate_on_submit():
            data = form.data
            user.set(**data)
            user.save()
            flash("Your profile has been saved")
        else:
            flash("form did not validate on submit")
        return self.render('user/profile.html', form=form, data=user)

user_view.add_view(Profile(name='Profile', url='profile'))

提交表单时,wtforms不会报告任何错误(除非有任何错误)但验证不会返回到我的配置文件视图(else:分支始终执行)

尽管已经彻底扫描了烧瓶管理员文档,源代码和示例,但我无法找到这项工作。

任何人都可以建议我如何修复我的代码,或解决这个问题?

我怀疑使用GET方法而不是POST或Flask-WTF CSRF检查失败提交表单。

这是我用你的示例代码制作的小小的要点。 它按预期工作: https//gist.github.com/4556210

几条评论:

  1. 模板使用一些Flask-Admin库函数来呈现表单。 如果你不想,你不必使用它们;
  2. 使用模拟用户对象
  3. 如果要运行示例,请将模板放在templates /子目录下。

在任何一种情况下,Flask-Admin视图的行为与“普通”Flask视图完全相同,它们的组织方式不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM