【发布时间】:2016-11-16 06:21:09
【问题描述】:
我想要达到的目标:
我正在尝试从头开始构建一个非常简单的管理界面,将文本字段和图像存储在 mongodb 中。然后,用户可以登录并对站点的内容进行小的更改。
我的问题以及我认为我感到困惑的地方:
是否可以在 pymongo 中生成显示现有数据库记录的表单(以便可以在数据库中编辑和更新它们)?在试图理解问题之后,我想我的困惑在于我是否可以直接将 WTForms 与 pymongo 一起使用,或者我是否需要使用基于对象的映射器,例如 MongoEngine。
这是我的烧瓶应用程序:
app = Flask(__name__)
# define the mongo connection
app.config['DB_HOST'] = 'mongodb://localhost/'
app.config['DB_PORT'] = 27017
app.config['DB_DBNAME'] = 'my_db'
the_db = PyMongo(app, config_prefix='DB')
#others routes here...
@app.route("/admin/")
def dashboard():
pages = list(the_db.db.pages.find({}))
return render_template('admin.html', pages=pages)
@app.route('/admin/update', methods=['POST'])
def update():
updated = datetime.datetime.utcnow()
page = request.form['page_name']
header = request.form['header']
body = request.form['body']
h_db.db.pages.update_one(
{'page': page},
{'$set':
{
'updated': updated,
'header': header,
'body': body
}
}, upsert=True)
pages = list(the_db({}))
return render_template('admin.html', pages=pages)
这是模板:
{% for i in pages %}
{{ i.page }}<br>
{% endfor %}
{% from "_formhelpers.html" import render_field %}
<form action="/admin/update" autocomplete="on" method="POST">
{{ render_field(form.username) }}
<input type="text" name="page_name" /><br/>
<input type="text" name="header" /><br/>
<input type="TextAreaField" name="body" /><br/>
<input type="submit" name="submit" /><br/>
</form>
【问题讨论】:
-
这是我选择 Django 而不是 Flask 的一个例子。管理员已包含在内,还包括一个编辑视图。 docs.djangoproject.com/en/1.9/ref/class-based-views/…
标签: python flask pymongo wtforms flask-wtforms