0

假设世界标准时间 2005 年 8 月 2 日晚上 8:30 有一个事件。我想通过发布请求将此值从 jquery 发送到 django 或 webapp 服务器,并使用相同的值更新服务器。我该怎么做?

我尝试这样做的方式是:

$.post(
    url :"http://localhost:8080/m_post_data",
    data : {'start_date': "4/4/2012",
    'start_time': "14:30:00"})

并在视图中(当前为 webapp2,在 appengine 上)我尝试以下操作:

class PostDataMatch(webapp2.RequestHandler):
  def post(self):
    mat = Match(
      start_date = self.request.get('start_date'),
      start_time = self.request.get('start_time'),
    )
    mat.put()

    self.response.write(self.request.get('start_time'))

模型定义如下:

class Match(db.Model):
    start_date = db.DateProperty()
    start_time = db.TimeProperty()  

但这给出了一个错误:

BadValueError: Property start_time must be a time

我应该如何尝试修复它?

4

2 回答 2

3
  1. 您应该使用 DateTime 属性而不是两个属性
  2. 您应该将字符串解析为日期时间对象(使用 strptime)
于 2012-04-06T09:10:20.570 回答
1

更好的是:

from dateutil import parser
start_date = self.request.get('start_date')
start_time = self.request.get('start_time')
tm = start_date + " " + start_time
parser.parse(tm)

样本输出:

In [28]: strn = '4/5/2012 14:30:00'

In [29]: parser.parse(strn)
Out[29]: datetime.datetime(2012, 4, 5, 14, 30)

或没有 dateutil:

In [62]: start_date
Out[62]: '4/4/2012'

In [63]: start_time
Out[63]: '14:30:00'

In [64]: date_time = start_date+" "+start_time

In [65]: datetime.strptime(date_time, '%m/%d/%Y %H:%M:%S')
Out[65]: datetime.datetime(2012, 4, 4, 14, 30)
于 2012-04-06T09:39:50.173 回答