【问题标题】:return mongodb document as text in flask在烧瓶中将 mongodb 文档作为文本返回
【发布时间】:2020-06-10 23:21:02
【问题描述】:

我正在 pymongo 和烧瓶中开展一个项目,其中我有一个电影数据库,我使用端点按标题查找特定电影。如果电影存在,我想将所有特定电影的字段(例如 movie = {"title" : "Hobbit" , "year" :2013} )作为纯 html text 返回。但是我是初学者,我无法用我的代码返回字段:

 @app.route('/findmoviebytitle' ,methods = ['GET' , 'POST'])
 def find_movie_by_title():
        if request.method =='POST':
              movie = movies.find_one({"title":request.form['title']})
              if movie != None: //if movie exists
                    movie = {'_id': str(movie['_id']) , 'Title' : movie['title'] , 
                   'Actors' : movie['actors'] , 'year' : movie , 'plot':movie['plot'] }
                    return ''' {% for key, value in movie.items() %} //return movie fields
                              {{ value.item }} 
                            {% endfor %}  '''
        return render_template('movie-title.html') //this is the page where I submit a movie title 

感谢您对这项任务的帮助。提前谢谢你

【问题讨论】:

  • 为什么要以文本形式返回?
  • @ngShravil.py 作为网页中的文本假设您有一部 2013 年出版的名为 hobbit 的电影我想在网页中显示这些统计数据

标签: python mongodb flask


【解决方案1】:

如果要在网页中显示,则不需要转换为字符串。这将是不必要的工作。在这里你只是在做find_one(),但在你必须获取许多记录的情况下,转换为字符串会消耗大量资源。

您需要进行以下更改:

app.py

from flask import render_template # Import this, you you have not imported
@app.route('/findmoviebytitle' ,methods = ['GET' , 'POST'])
def find_movie_by_title():
       if request.method =='POST':
             movie = movies.find_one({"title":request.form['title']})
             if movie != None:
                   return render_template('movie-details.html', movie=movie)
       return render_template('movie-title.html')

movie-details.html

{% for key, value in movie.items() %}
    {{ value }}
{% endfor %}

【讨论】:

  • 如果你有太多记录,你不遍历游标吗?那么movie-details.html 将有相同的代码?
  • 不。在当前场景中,我们正在执行find_one,这将只返回一个文档,因此在html 页面中,我们将仅迭代该文档的项目。在新场景中,我们将拥有许多文档,对于每个文档,我们需要显示项目。所以,我们将有两个循环。第一个循环,用于文档,第二个循环,用于每个文档的项目。我把它留给你,用于学习目的。如果您遇到困难,请告诉我。
  • 我找到了。非常感谢 。你之前又帮了我一次
猜你喜欢
  • 2020-10-13
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 2021-12-25
  • 1970-01-01
  • 2018-09-09
  • 1970-01-01
相关资源
最近更新 更多