按降序显示Google App Engine中的内容

时间:2018-06-06 14:56:45

标签: python python-2.7 google-app-engine flask google-cloud-datastore

我尝试根据输入时间以降序显示Google App Engine内的记录。我使用DateTimeProperty在{Datastore'内设置Timestamp列。

from flask import Flask, render_template, request, redirect
from google.appengine.ext import ndb

app = Flask(__name__)

class MessagePost(ndb.Model):
    Title = ndb.StringProperty(required=True)
    MyPost = ndb.StringProperty(required=True)
    Timestamp = ndb.DateTimeProperty(auto_now_add=True)

@app.route("/Posting_message", methods=["POST"])
def posting_messsage():
    title = request.form["your_title"]
    mypost = request.form["title"]

    post_key = MessagePost(Title=title, MyPost=mypost).put()
    retrieved_post = MessagePost.query().order(-MessagePost.Timestamp)

    return render_template("simple_post.html", retrieved_post=retrieved_post.Title, retrieved_title=retrieved_post.MyPost)

@app.route("/")
def post_page():
    return render_template("simple_post.html")

if __name__ == "__main__":
    app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title> Twitt post</title>
    <link rel="stylesheet" type="text/css" href="/static/style.css?v=1.8483317">
</head>
<body>
<div>
    <form name="twitt_form" action={{url_for("posting_messsage")}} method="POST">
        <b style="font-size:124%";>TITLE</b><hr> <br>
    <textarea rows="1" cols="20" name="your_title" id='your_title' value="" required></textarea> <br><br>
        <b style="font-size:124%";>WRITE YOUR POST</b><hr> <br>
        <textarea name="title" id='title' value="" required></textarea> <br><br>
    <br>
    <button type="submit" class="button"><b style="font-size:124%";>POST</b></button>
    </form> <br><br><br><br>
</div
    <div id = "lower_part">
        <b style="font-size:124%";>RECENTPOST</b> <br><hr><br>
        <textarea rows="1" cols="20" name="Recent_post" id="my_post" disabled>{{retrieved_post}} {{retrieved_title}}
        </textarea><br><br>
        <button class="delete_button"><b style="font-size:124%";>Delete</b></button>
    </div>
</body>
</html>

这是data datastore

`Key    Write Ops    ID    Key Name    MyPost    Timestamp    Title
    aghkZXZ-...    8    4504699138998272        eeee    2018-06-06 09:42:42    how 
    aghkZXZ-...    8    5064350557536256        prem    2018-06-06 09:37:46    hi
    aghkZXZ-...    8    5345825534246912        nandha    2018-06-06 09:34:31    hello
    aghkZXZ-...    8    5627300510957568        back    2018-06-06 09:38:32    welcome
    aghkZXZ-...    8    5630599045840896        hahah    2018-06-06 09:43:40    hahah
    aghkZXZ-...    8    6190250464378880        goodwork 2018-06-06 09:38:08 nanda
    aghkZXZ-...    8    6471725441089536        welcome     2018-06-06 09:37:37 hey
    aghkZXZ-...    8    6753200417800192        hard     2018-06-06 09:38:47 work`

我需要My_Post内的Titledatastore以{降}的顺序显示在textarea内。

1 个答案:

答案 0 :(得分:1)

由于ndb“最终一致性”,实体可能无法立即使用。您的代码坚持要求它立即可用。当您已经拥有实体属性时,为什么要花费资源来进行查询? post_key成功后,将设置put()。所以你可以测试它,或者只使用你已经拥有的属性。查询在这里是一种浪费。