【发布时间】:2018-04-08 08:12:47
【问题描述】:
我想在 Flask 中显示嵌套的 cmets。我使用的是 MongoDb,我的文档结构是这样的:
{"_id":16,"content":"This is first answer.","discussion_id":1,
"posted":{"$date":"2017-10-26T19:19:05.174Z"}}
{"_id":17,"content":"This is second answer.","discussion_id":1,
"posted":{"$date":"2017-10-26T19:19:27.325Z"}}
{"_id":18,"content":"This is third answer.","discussion_id":1,
"posted":{"$date":"2017-10-26T19:20:00.126Z"}}
{"_id":19,"content":"This is fourth answer. This answer's parent should be second.","discussion_id":1,
"posted":{"$date":"2017-10-26T19:21:28.206Z"},"parentid":2}
{"_id":20,"content":"Fifth answer whose parent should be fourth.","discussion_id":1,
"posted":{"$date":"2017-10-26T19:22:11.393Z"},"parentid":4}
测试python程序如下:
from flask import render_template
from flask import Flask
from flask_pymongo import PyMongo
app = Flask(__name__)
app.config['MONGO_DBNAME'] = 'programming'
app.config['MONGO_URI'] = 'mongodb://localhost:27017/programming'
app.config['JSON_AS_ASCII'] = False
mongo = PyMongo(app)
@app.route('/')
def index():
table = mongo.db.comments
commentList = table.find({'discussion_id' : 1})
comments = []
for comment in commentList:
comments.append({'commentnumber' : comment['_id'], 'date' : comment['posted'], 'content' : comment['content']})
result = mongo.db.comments.find_one( { '_id' : comment['_id'] , "parentid": { '$exists': True, '$ne': False } })
if (result):
comments.append({ 'parent' : comment['parentid'] })
print("Parent comment ", comment['parentid'])
return render_template('index.html', comments=comments)
if __name__ == "__main__":
app.run(debug=True)
还有 jinja 模板我想递归地显示 cmets。
{%- for item in comments recursive %}
<li>{{ item.content }}</li>
{%- if item.children -%}
<ul class="children">{{ loop(item.children) }}</ul>
{%- endif %}</li>
{%- endfor %}
如何在 Jinja 中存储当前帖子的子项并递归显示嵌套的 cmets。
【问题讨论】:
标签: python mongodb flask jinja2