Ich schreibe eine ToDo-Listen-App, um mir den Einstieg in Python zu erleichtern. Die App läuft auf GAE und ich speichere Aufgaben im Datenspeicher. Ich möchte ihnen alle Gegenstände zeigen, und sie allein. Das Problem ist, dass die App derzeit allen Benutzern alle Elemente anzeigt, sodass ich sehen kann, was Sie schreiben, und Sie sehen, was ich schreibe. Ich dachte, mein todo.author-Objekt in eine Zeichenfolge umzuwandeln und zu prüfen, ob es mit dem Namen des Benutzers übereinstimmt, wäre ein guter Anfang, aber ich kann nicht herausfinden, wie das geht.
Das habe ich in meiner 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('/')
In meiner index.html hatte ich dies ursprünglich:
<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>
Ich möchte Elemente jedoch nur dem Benutzer anzeigen, der sie erstellt hat. Ich dachte daran, es zu versuchen
{% for todo in todos %}
{% ifequal todo.author nickname %}
<input type="checkbox"> {{todo.item}} <hr />
{% endifequal %}
{% endfor %}
umsonst. Die Liste wird leer angezeigt. Ich nahm an, dass es daran liegt, dass todo.author keine Zeichenfolge ist. Kann ich den Wert als Zeichenfolge auslesen oder das Objekt in Zeichenfolge umwandeln?
Vielen Dank!
Edit: Hier ist meine Todo-Klasse
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
Wird sich das Ändern meines Autors in eine StringProperty negativ auswirken? Vielleicht kann ich ganz auf das Casting verzichten.
TemplateSyntaxError: Could not parse the remainder: '(todo.author)' from 'str(todo.author)'
Ideen?