Tôi đang viết một ứng dụng danh sách Công việc để giúp bản thân bắt đầu với Python. Ứng dụng đang chạy trên GAE và tôi đang lưu trữ các mục todo trong Data Store. Tôi muốn trưng bày các mặt hàng của mọi người cho họ, và một mình họ. Vấn đề là ứng dụng hiện hiển thị tất cả các mục cho tất cả người dùng, vì vậy tôi có thể thấy những gì bạn viết và bạn thấy những gì tôi viết. Tôi nghĩ rằng việc truyền đối tượng todo.author của mình thành một chuỗi và xem liệu nó có khớp với tên của người dùng hay không sẽ là một khởi đầu tốt, nhưng tôi không thể tìm ra cách thực hiện điều đó.
Đây là những gì tôi có trong 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('/')
Trong index.html của tôi, ban đầu tôi có cái này:
<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>
nhưng tôi chỉ muốn hiển thị các mục cho người dùng đã tạo ra chúng. Tôi đã nghĩ đến việc thử
{% for todo in todos %}
{% ifequal todo.author nickname %}
<input type="checkbox"> {{todo.item}} <hr />
{% endifequal %}
{% endfor %}
không có kết quả. Danh sách trống. Tôi cho rằng đó là vì todo.author không phải là một chuỗi. Tôi có thể đọc giá trị dưới dạng một chuỗi hay tôi có thể truyền đối tượng thành Chuỗi không?
Cảm ơn!
Chỉnh sửa: Đây là lớp Todo của tôi
class Todo(db.Model):
author = db.UserProperty()
item = db.StringProperty()
completed = db.BooleanProperty()
date = db.DateTimeProperty(auto_now_add=True)
Việc thay đổi tác giả của tôi thành StringProperty có ảnh hưởng tiêu cực gì không? Có lẽ tôi có thể từ bỏ việc casting hoàn toàn.
TemplateSyntaxError: Could not parse the remainder: '(todo.author)' from 'str(todo.author)'
bất kỳ ý tưởng nào?