我正在编写一个 ToDo 列表应用程序来帮助自己开始使用 Python。这个应用程序在 GAE 上运行,我在数据库中存储待办事项。我想把每个人的物品都展示给他们,而且只展示给他们。问题是这个应用程序目前向所有用户显示所有条目,所以我可以看到你写了什么,你也可以看到我写了什么。我认为将 todo.author 对象转换为字符串并查看它是否与用户名匹配将是一个很好的开始,但我不知道如何做到这一点。
这是我主要的东西
...
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 不是字符串。我可以将值读出为字符串,还是将对象强制转换为 String?
谢谢!
编辑: 这是我的 Todo 类
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
将我的作者更改为 StringProperty 会产生什么负面影响吗? 也许我可以完全放弃强制转换。