我正在编写一个 ToDo 列表应用程序来帮助自己开始使用 Python。该应用程序在 GAE 上运行,我将待办事项存储在 Data Store 中。我想向他们展示每个人的物品,而且只有他们一个人。问题是应用程序当前向所有用户显示所有项目,所以我可以看到你写的东西,你看到我写的东西。我认为将我的 todo.author 对象转换为字符串并查看它是否与用户名匹配将是一个好的开始,但我不知道该怎么做。
这就是我的 main.py
...
user = users.get_current_user()
if user:
nickname = user.nickname()
todos = Todo.all()
template_values = {'nickname':nickname, 'todos':todos}
...
def post(self):
todo = Todo()
todo.author = users.get_current_user()
todo.item = self.request.get("item")
todo.completed = False
todo.put()
self.redirect('/')
在我的 index.html 中,我最初有这个:
<input type="text" name="item" class="form-prop" placeholder="What needs to be done?" required/>
...
<ul>
{% for todo in todos %}
<input type="checkbox"> {{todo.item}} <hr />
{% endfor %}
</ul>
但我只想向创建它们的用户显示项目。我想过尝试
{% for todo in todos %}
{% ifequal todo.author nickname %}
<input type="checkbox"> {{todo.item}} <hr />
{% endifequal %}
{% endfor %}
无济于事。列表变成空白。我认为这是因为 todo.author 不是字符串。我可以将值作为字符串读出,还是可以将对象转换为字符串?
谢谢!
编辑:这是我的 Todo 课程
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
将我的作者更改为 StringProperty 是否会产生负面影响?也许我可以完全放弃铸造。