2012-04-06 25 views
0

說在2005年8月2日8:30 UTC有一個事件。 我想通過發佈請求將此值從jquery發送到django或webapp服務器,並使用相同的值更新服務器。 我該怎麼做?從jquery發送時間值到python服務器

我試圖做的方式是:

$.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 

我該如何嘗試修復它?

回答

3
  1. 您應該使用,而不是兩個屬性的DateTime屬性
  2. 你應該parse the string into datetime object(使用strptime)
+0

是的,這是一種選擇,但有做在客戶端本身的任何方式,我的JavaScript值我送本身就是一個dateproperty? – whatf 2012-04-06 09:20:57

+0

然後將其格式化回字符串以便能夠將其發送到服務器?最好留在Shay的建議中。 – marue 2012-04-06 09:24:37

+0

可否請您在問題中採用上述日期,並粘貼一段我一直試圖轉換爲最後一小時並且一個接一個地收到錯誤的片段。 – whatf 2012-04-06 10:32:52

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)