如何使用jinja在模板中循环mongodb中的嵌套文档?

2024-04-20 10:10:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试检索与键review相关的嵌入文档,使用jinja将它们循环到模板中,但没有成功。你知道吗

当前show_reviews变量正在检索确切的产品,正如我从终端上的打印中看到的那样,但我无法访问审阅并在模板中循环它。你知道吗

你知道吗应用程序类型地址:

@app.route('/review/product_id?=<id>', methods=['POST', 'GET'])
def review(id):
    now = datetime.datetime.now()
    name=session['name']
    post=request.form.get('review')
    reviews = mongo.db.products.find_one({"_id": ObjectId(id)})
    if request.method == 'POST':
        mongo.db.products.find_one_and_update({"_id": ObjectId(id)},{
                    '$push':{'review':{
                    'name': name,
                    'post': post,
                    'date': now.strftime("%d-%m-%Y")
                    }
                }
            }
        )
    see_review = mongo.db.products
    show_reviews = list(see_review.find({"_id": ObjectId(id)}))
    print(show_reviews)
    return render_template(
        'product.html',
        reviews=reviews, 
        name=name, date=now, 
        post=post, 
        show_reviews=show_reviews
    )

你知道吗产品.html地址:

 <div class="card-body">
            <!--LOOP TO DISPLAY THE COMMENTS HERE-->

            {% for rw in show_reviews %}
            <p>{{ rw.post }}</p>
            <small class="text-muted">Posted by {{ rw.name }} on {{ rw.date }}</small>
            <hr>
            {% endfor %}

            <!-- ENDFOR HERE-->
            <hr>
<!--FORM-->
{%if session['email'] != None %}
            <form action="{{url_for('review', id=reviews._id)}}" method="POST">
              <div class="form-group green-border-focus">
                <textarea class="form-control" id="review" name='review' placeholder="Add Review" rows="3" required></textarea>
            </div>
            <button class="btn btn-success" type="submit">Leave a Review</button>
            </form>
           {% endif %}
</div>

文档结构: enter image description here


Tags: namedivformiddbmongoshowpost
1条回答
网友
1楼 · 发布于 2024-04-20 10:10:59

好吧。根据文档的结构,以下是您应该如何组织代码:

你知道吗应用程序类型地址:

@app.route('/review/product_id?=<id>', methods=['POST', 'GET'])
def review(id):
    now = datetime.datetime.now()
    name=session['name']
    post=request.form.get('review')
    reviews = mongo.db.products.find_one({"_id": ObjectId(id)})
    if request.method == 'POST':
        mongo.db.products.find_one_and_update({"_id": ObjectId(id)},{
                                               '$push':{'review':{
                                               'name': name,
                                               'post': post,
                                               'date': now.strftime("%d-%m-%Y")
                                              }}})
    see_review = mongo.db.products.find_one({"_id": ObjectId(id)})
    show_reviews = see_review['review']
    print(show_reviews)
    return render_template('product.html', reviews=reviews, name=name,
                           date=now, post=post, show_reviews=show_reviews)

你知道吗产品.html地址:

 <div class="card-body">
        <! LOOP TO DISPLAY THE COMMENTS HERE >

        {% for rw in show_reviews %}
        <p>{{ rw['post'] }}</p>
        <small class="text-muted">Posted by {{ rw['name'] }} on {{ rw['date'] }}</small>
        <hr>
        {% endfor %}

        <!  ENDFOR HERE >
        <hr>
<! FORM >
    {%if session['email'] != None %}
        <form action="{{url_for('review', id=reviews._id)}}" method="POST">
            <div class="form-group green-border-focus">
                <textarea class="form-control" id="review" name='review' placeholder="Add Review" rows="3" required></textarea>
            </div>
            <button class="btn btn-success" type="submit">Leave a Review</button>
        </form>
    {% endif %}
</div>

相关问题 更多 >