2013-12-09 5 views
0

Я новичок в GAE и на языке python, и я хочу сделать что-нибудь очень простое, у меня есть поле комментариев (http://soltexfirstapp.appspot.com), и все, что я хочу, проверьте, не написал ли кто-нибудь новый комментарий перед тем, как пользователь отправит новый, и предупредит его с полем, в котором говорится: «В поле комментариев есть новый комментарий, вы хотите продолжить ?! Да или нет?". Я настолько запутался в синтаксисе python, особенно с запросом.Google App Engine База данных Последняя запись

Мой код работает ...

рупор. ру

import webapp2 
import datetime 
import time 
from google.appengine.ext import webapp 
from google.appengine.ext import db 
from google.appengine.ext.webapp \ 
import template 



class Shout(db.Model): 
    message = db.StringProperty(required=True) 
    when = db.DateTimeProperty(auto_now_add=True) 
    who = db.StringProperty() 

class MainPage(webapp2.RequestHandler): 
    def get(self): 
     shouts = db.GqlQuery('SELECT * FROM Shout ' 
'ORDER BY when ASC') 
     values = { 
      'shouts': shouts 
     } 

     # my attempt to make and print the query 
     # aaa = db.GqlQuery('SELECT * FROM Shout ' 
          'ORDER BY when DESC LIMIT 1') 
     # self.response.out.write('Query is: %s', aaa) 

     self.response.out.write(template.render('main.html',values)) 

    def post(self): 
     shout = Shout (
      message = self.request.get('message'), 
      who = self.request.get('who')) 
     shout.put() 
     self.redirect('/') 

application = webapp2.WSGIApplication([ 
    ('/', MainPage), 
], debug=True) 

main.html

<!DOCTYPE html> 
<html> 
<head> 
    <title>Comment System</title> 
    <link rel="stylesheet" href="./css/main.css" media="screen" /> 
</head> 
<body> 

<h1>Cloud Comment System</h1> 

{% for shout in shouts %} 

<div> 
    <div id="fl"> 
     {{shout.when}} 
     from 
     {% ifequal shout.who "" %} 
      Anonymous 
     {% else %} 
     {{shout.who}} 
     {% endifequal %} 
    </div> 

    {{shout.message}} 

</div> 
{% endfor %} 

<form action="" method="post" accept-charset="utf-8"> 
    <p>From:<input type="text" name="who" value="" id="who"></p> 
    <p>Message:<input type="text" name="message" value="" id="message"></p> 
    <p><input type="submit" name="" value="comment"></p> 
</form> 

</body> 
</html> 

Я очень признателен за любую помощь. Спасибо

ответ

0

С самого начала вы всегда должны сказать, что не работает в вашем коде, ошибке и т. Д. В настоящий момент ваш запрос на помощь является неопределенным.

Итак, я попытаюсь угадать, что вы после.

В вашем запросе вы заказываете ASC (с датой, которая означает самый старый предмет). Вы должны заказать DESC, новейший сначала, поскольку вы предлагаете вам самые последние комментарии.

запросе должен быть

shouts = db.GqlQuery('SELECT * FROM Shout ORDER BY when DESC') 

В коде у вас есть какие-то дополнительные ' символы.

Вы, вероятно, не хотите зацикливаться и показывать все крики, поэтому вы должны ограничить набор результатов приложением или чем-то другим.

Также вы получаете Shout с отсутствующей датой (например, дату, с которой можно сравнить). Я предполагаю, что из вашего описания проблемы вы хотите Крик после определенной даты/времени. Вам нужно определить, что это за дата, и использовать ее в качестве сравнения в вашем запросе.

+0

Да, вы правы, я должен был сказать, что мой код работает. Iam, использующий Order by ASC, а последний - самый новый, поэтому его okey для меня. О дополнительных персонажах, оба способа правильные, посмотрите это видео https://www.youtube.com/watch?v=bfgO-LXGpTM в минуту 6:49, сделанное разработчиками Google. Спасибо за подсказку «fetch», я не думал об этом прямо сейчас, но это хорошая идеа, я постараюсь реализовать. Что мне нужно, сравните последнее «когда» до и после того, как пользователь отправит комментарий, если его не то же самое после отправки и до публикации, пользователь должен быть предупрежден. – soltex

+0

Возможно, вам понадобится запрос async javascript для этого, в противном случае использование должно будет отправить статью дважды, если я пойму, что вы говорите правильно –

Смежные вопросы