Python是否具有等效的toString(),并且可以将db.Model元素转换为String吗?

我正在编写一个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?


谢谢!




喵喵时光机
浏览 426回答 3
3回答

鸿蒙传说

在python中,该str()方法类似于toString()其他语言中的方法。称为传递对象以将其转换为字符串作为参数。在内部,它调用__str__()参数对象的方法以获取其字符串表示形式。但是,在这种情况下,您正在比较UserProperty数据库中的作者,该作者的类型users.User与昵称字符串相同。您将需要在模板中比较nickname作者的属性todo.author.nickname。

桃花长相依

在Python中,我们可以使用__str__()方法。我们可以像这样在我们的类中重写它:class&nbsp;User:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;firstName&nbsp;=&nbsp;'' &nbsp;&nbsp;&nbsp;&nbsp;lastName&nbsp;=&nbsp;'' &nbsp;&nbsp;&nbsp;&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;__str__(self): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;self.firstName&nbsp;+&nbsp;"&nbsp;"&nbsp;+&nbsp;self.lastName并且在跑步时print(user)它将调用该函数__str__(self)&nbsp;并打印firstName和lastName

千巷猫影

str()&nbsp;是等效的。但是,您应该过滤查询。目前,您的查询是all()Todo。todos&nbsp;=&nbsp;Todo.all().filter('author&nbsp;=&nbsp;',&nbsp;users.get_current_user().nickname())或者todos&nbsp;=&nbsp;Todo.all().filter('author&nbsp;=&nbsp;',&nbsp;users.get_current_user())取决于您在Todo模型中定义的作者。AStringProperty或UserProperty。注意nickname是一种方法。您正在传递方法,而不是模板值中的结果。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python