2012-06-14 18 views
0

語法錯誤:「關鍵字不能是一個表達式」表單提交的數據資料儲存庫

msg = "keyword can't be an expression" 
     offset = None 
     print_file_and_line = None 
     text = 'data = data(name and mood=self.request.POST)\n' 

我張貼許多代碼這裏,即使數據存儲區有一個「訪客」實體名稱,心情,日期屬性(在index.yaml中文件的工作顯然),表單數據沒有被提交到數據存儲爲明顯,在控制檯查詢:

SELECT name FROM Visitor 
      ^SyntaxError: invalid syntax 

下的最後一節是我猜測什麼,從做修改Google教程。我知道這是錯的,但希望你能看到我想要做的事:

class Visitor(db.Model): 

    name = db.StringProperty(required=1) 
    mood = db.StringProperty(choices=["Good","Bad","Fair"]) # this is Radio button 
    date = db.DateTimeProperty(auto_now_add=True) 

class MainPage(webapp.RequestHandler): 
    def get(self): 
     self.response.out.write("""<html><body> 
     <form action="/" method="post"> 
      <p>First Name: <input type="text" name="name"/></p> # text 
      <p><input type="radio" name="mood" value="good">Good</p> # radio button v 
      <p><input type="radio" name="mood" value="bad">Bad</p> 
      <p><input type="radio" name="mood" value="fair">Fair</p> 
      <p><input type="submit"value="Process"></p> 
     </form></body></html>""") 
    def post(self): 
     name = self.request.get("name") 
     mood = self.request.get("mood") 
     data = data(name and mood=self.request.POST) # < <^^ PROBLEM(S) 
     if data.is_valid(): 
      Visitor = data.save(commit=False) 
      Visitor.put() 

預先感謝幫助實現預期的目標。

+0

呃,不,我們看不到你想要做什麼。這是什麼'data = data(...'行應該是在做什麼? –

+0

你試圖爲訪問者保存心情和名字?爲什麼你要設置self.request.POST的心情?除此之外,這種語法是無效的很多部分 – aschmid00

回答

2

你的問題是在這行你指出

data = data(name and mood=self.request.POST) 

的語法錯誤是因爲你正在試圖做的表達式中的賦值。

mood=self.request.POST 
#"name and mood" is a logical expression which will return 
#"mood" if bool(name) is True and bool(mood) is True 
#Otherwise it returns the first False value. 
data=data(name and mood) 

當然,因爲數據大概是哪個你用它的結果替換調用...

此外,數據不被任何定義(我們可以看到),這是可笑了。 ..所以,雖然我們已經擺脫了一個語法錯誤,但是(可能)潛伏在腳本中的其他問題。

+0

感謝您的解釋mgilson。我試圖將名稱和心情值的值存入數據存儲區,保存(放入)Visitor聽起來是正確的,任何幫助都可以? – p1nesap

+0

@pavi - 我不知道如何任何此代碼的作品 - 我以前沒有使用過這些軟件包,所以不幸的是我沒有太多用處。 – mgilson