Я пишу приложение со списком ToDo, чтобы помочь себе начать работу с Python. Приложение работает в GAE, и я храню задачи в хранилище данных. Я хочу показать им все, и только им. Проблема в том, что приложение в настоящее время отображает все элементы для всех пользователей, поэтому я могу видеть, что вы пишете, и вы видите, что пишу я. Я думал, что приведение моего объекта 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 не является строкой. Могу ли я прочитать значение как строку или преобразовать объект в String?
Благодарность!
Изменить: вот мой класс Todo
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
Повлияет ли на что-нибудь негативное изменение моего автора на StringProperty? Может, вообще откажусь от кастинга.
TemplateSyntaxError: Could not parse the remainder: '(todo.author)' from 'str(todo.author)'
какие-нибудь идеи?