を編集するためのフォームにロードpymongoデータ:フラスコ、pymongo、フォーム - 私が達成しようとしています何
を私はテキストフィールドや画像を保存する最初から非常にシンプルな管理インタフェースを構築しようとしていますmongodb。ユーザーはログインして、サイトの内容を少し変更することができます。
私の問題は、どこで私は混乱しています考える:
は、それが示す既存のDBレコードでフォームを生成するようにpymongoで可能です(ので、彼らは、編集およびDBに更新することができますか)?この問題を理解しようとすると、私は、私が直接pymongoでWTFormを使用できるかどうか、または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>
これは、Flaskの上でDjangoを選択した例です。管理者は既に含まれており、編集ビューも含まれています。 https://docs.djangoproject.com/en/1.9/ref/class-based-views/generic-editing/#django.views.generic.edit.UpdateView – joshlsullivan