मैं पायथन के साथ खुद को शुरू करने में मदद करने के लिए एक ToDo सूची ऐप लिख रहा हूं। एप्लिकेशन 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 एक स्ट्रिंग नहीं है। क्या मैं मान को स्ट्रिंग के रूप में पढ़ सकता हूं, या क्या मैं स्ट्रिंग को ऑब्जेक्ट डाल सकता हूं?
धन्यवाद!
संपादित करें: यहाँ मेरा टोडो वर्ग है
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
क्या मेरे लेखक को स्ट्रिंगरप्रॉपरि के लिए कुछ भी नकारात्मक रूप से बदलना होगा? शायद मैं पूरी तरह से कास्टिंग कर सकता हूं।
TemplateSyntaxError: Could not parse the remainder: '(todo.author)' from 'str(todo.author)'
कोई विचार?