gpt4 book ai didi

python - Flask-Admin - 自定义 View

转载 作者:太空狗 更新时间:2023-10-30 00:07:48 30 4
gpt4 key购买 nike

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

在使用 ModelView 时一切都很顺利,但是当涉及到 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不报错(除非有)但是验证不返回我的profile View (else: branch总是执行)

尽管彻底扫描了 flask-admin 文档、源代码和示例,但我无法找到使这项工作正常进行的方法。

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

最佳答案

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

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

评论很少:

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

无论哪种情况,Flask-Admin View 的行为方式都与“普通”Flask View 完全相同,只是组织方式不同。

关于python - Flask-Admin - 自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14348946/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com