gpt4 book ai didi

python - 如何使用 flask_pymongo 和 flask_admin 添加管理员

转载 作者:可可西里 更新时间:2023-11-01 10:49:25 25 4
gpt4 key购买 nike

如何使用 flask_pymongo 和 flask_admin 添加管理员

```

from flask import Flask
from flask_pymongo import PyMongo

from bson import json_util

from bson.objectid import ObjectId
import flask_admin as admin

from wtforms import form, fields

from flask_admin.form import Select2Widget
from flask_admin.contrib.pymongo import ModelView, filters
from flask_admin.model.fields import InlineFormField, InlineFieldList
from flask_pymongo import PyMongo

# app settings
app = Flask(__name__)

app.config['MONGO_URI'] = 'mongodb://username:passwrod@ds156811.mlab.com:56811/somedb'
app.config['MONGO_CONNECT'] = True
app.secret_key = 'secret'

mongo = PyMongo(app)
db = mongo


class UserForm(form.Form):
name = fields.StringField('Name')
email = fields.StringField('Email')

class UserView(ModelView):
column_list = ('name', 'email')
form = UserForm

admin = admin.Admin(app)


admin.add_view(UserView(db['users']))

```

这是取自 https://flask-admin.readthedocs.io/en/v1.0.9/db_pymongo/ 的小例子这是另一个: https://github.com/flask-admin/flask-admin/tree/master/examples/pymongo

flask-admin 社区使用了 pymongo 但我想使用 flask-pymongo 包。

我对大部分代码没问题,但是向管理页面添加 View 会产生问题,admin.add_view() 函数会产生问题。

问题是如何通过 flask-admin 和 flask-pymongo(pymongo 不同)向管理页面添加 View ?

已编辑:错误信息:

TypeError: 'PyMongo' object is not subscriptable

我们使用 pymongo 获取的对象与我们从 pyflask-mongo 获取的对象不同,这是造成问题的原因。

最佳答案

不确定以下更改是否有帮助,这些实际上只是对您的问题的评论,但由于代表率低,我无法发表评论。

import flask_admin as admin

我不会以管理员身份导入它,因为末尾有以下行:

admin = admin.Admin(app)

请尝试以下操作:

from flask_admin import Admin

然后在底线:

admin = Admin(app)

通过这种方式,您不会将 admin 用于多个可能成为问题的事情。

编辑:

TypeError 导致问题是因为 Pymongo 对象不是可订阅对象所以你能不能把最后的代码改成这个,在 flask_admin 文档中找到这个:

admin.add_view(ModelView(User, db.session))

关于python - 如何使用 flask_pymongo 和 flask_admin 添加管理员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44282276/

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