列表理解即字典列表
list comprehension that a list of dictionaries
我有一个 mongo db cusor 对象,它被转换成一个列表。该列表是字典列表,但是当我访问该值时,出现以下错误:
in <listcomp>
for e in app.db.entries.find_one({})
TypeError: string indices must be integers
此处列出代码:
import datetime
from flask import Flask, render_template, request
from pymongo import MongoClient
app = Flask(__name__)
client = MongoClient("mongodb+srv://username:password@MicroBlog.0oxexa.mongodb.net/test")
app.db = client.MicroBlog
@app.route("/", methods = ["GET", "POST"])
@app.route("/home", methods = ["GET", "POST"])
def home():
if request.method == "POST":
content = request.form["content"]
formattedDate =datetime.datetime.today().strftime("%Y-%m-%d")
app.db.entries.insert_one({"content": content, "date": formattedDate})
mongo_entries_with_date = [
(
e["content"],
e["date"],
datetime.datetime.strptime(e["date"], "%Y-%m-%d").strftime("%b %d")
)
for e in app.db.entries.find_one({})
]
return render_template("home.html", entries = mongo_entries_with_date), 201
return render_template("home.html"), 200
只需在 mongo_entries_with_date
之前的行中执行 e = app.db.entries.find_one({})
并去掉方括号。或者在 app.db.entries.find_one({})
.
两边加上方括号
通过将 app.db.entries.find_one({}) 更改为 app.db.entries.find({}) 并将其余代码保持原样,这种方法同样有效。
我有一个 mongo db cusor 对象,它被转换成一个列表。该列表是字典列表,但是当我访问该值时,出现以下错误:
in <listcomp>
for e in app.db.entries.find_one({})
TypeError: string indices must be integers
此处列出代码:
import datetime
from flask import Flask, render_template, request
from pymongo import MongoClient
app = Flask(__name__)
client = MongoClient("mongodb+srv://username:password@MicroBlog.0oxexa.mongodb.net/test")
app.db = client.MicroBlog
@app.route("/", methods = ["GET", "POST"])
@app.route("/home", methods = ["GET", "POST"])
def home():
if request.method == "POST":
content = request.form["content"]
formattedDate =datetime.datetime.today().strftime("%Y-%m-%d")
app.db.entries.insert_one({"content": content, "date": formattedDate})
mongo_entries_with_date = [
(
e["content"],
e["date"],
datetime.datetime.strptime(e["date"], "%Y-%m-%d").strftime("%b %d")
)
for e in app.db.entries.find_one({})
]
return render_template("home.html", entries = mongo_entries_with_date), 201
return render_template("home.html"), 200
只需在 mongo_entries_with_date
之前的行中执行 e = app.db.entries.find_one({})
并去掉方括号。或者在 app.db.entries.find_one({})
.
通过将 app.db.entries.find_one({}) 更改为 app.db.entries.find({}) 并将其余代码保持原样,这种方法同样有效。