2012-12-25 97 views
2

以下是我用於將表單輸入到GAE數據存儲中的新案例的代碼。當我嘗試輸入表單時,我在下面說出我正在使用一個意外的關鍵字參數的類型錯誤。我是python和GAE的新手,有誰知道我做錯了什麼?TypeError:__init __()獲得了意外的關鍵字參數

class Case(db.Model): 
    user = db.StringProperty(required = True) 
    title = db.StringProperty(required = True) 
    facts = db.TextProperty() 
    holding = db.TextProperty() 
    rule_of_law = db.TextProperty() 
    general_notes = db.TextProperty() 
    key_concepts = db.TextProperty()   

class NewCase(Handler): 
    def get(self,title="", 
      facts="", 
      holding="", 
      rule_of_law="", 
      general_notes="", 
      key_concepts="", 
      error=""): 

     if self.user: 
      self.render('newcase.html', title=title, 
         facts=facts, 
         holding=holding, 
         rule_of_law=rule_of_law, 
         general_notes=general_notes, 
         key_concepts=key_concepts, 
         error=error) 
     else: 
      self.redirect('/login') 

def post(self): 
    if not self.user: 
     self.redirect('/') 

    user = self.read_secure_cookie('user_id')  
    self.title = self.request.get('title') 
    self.facts = self.request.get('facts') 
    self.holding = self.request.get('holding') 
    self.rule_of_law = self.request.get('rule_of_law') 
    self.general_notes = self.request.get('general_notes') 
    self.key_concepts = self.request.get('key_concepts') 

    if self.title: 
     c = Case(user = user, 
       title = self.title, 
       facts = self.facts, 
       holding = self.holding, 
       rule_of_law = self.rule_of_law, 
       general_notes = self.general_notes, 
       key_concepts = self.key_concepts) 

     c.put() 

     self.redirect('/%s' % c.key().id()) 

    else: 
     error = "You must enter a title." 
     self.render('newcase.html',title = self.title, 

錯誤我越來越:

File "C:\Users\Chris\Documents\Web Apps\legalstudybuddy\main.py", line 233, in post 
    key_concepts = self.key_concepts) 
TypeError: __init__() got an unexpected keyword argument 'rule_of_law' 
+0

你必須顯示你的處理程序 – voscausa

+0

不知何故,我似乎已經解決了這個問題。不太確定我做了什麼,但現在它工作。 – user1927856

回答

2

我假設你使用Django模板。 來源:https://developers.google.com/appengine/docs/python/gettingstarted/templates

template.render(path, template_values) takes a file path to the template file and a dictionary of values, and returns the rendered text.

注意render只需要兩個參數:一個模板,你所提供的路徑,並具有所有的模板期望其他值的單個字典。

您將所有這些值作爲參數給出,而不是打包成字典。

變化:

self.render('newcase.html', title=title, facts=facts, holding=holding, ...) 

到:

self.render('newcase.html', {title=title, facts=facts, holding=holding, ...}) 

,同樣用於其他任何渲染調用。

+2

這個問題似乎並沒有與渲染調用,因爲我使用其他渲染調用與多個變量,它工作得很好。我認爲類型錯誤在創建GAE實體Case時引用了一個意外的關鍵字參數。編輯第233行是c = Case(...)中的行 – user1927856

1

運行到相同的問題後,我發現我的問題是在webapp2.WSGIApplication路由定義。

我已經定義了我的路線如下,例如,

webapp2.Route('/api/something/anEndpoint', handlers.SomethingEndpointHandler) 

然而,這條路線甚至沒有達到,因爲另一路由捕獲的正則表達式關鍵字,在路由表之前定義的,是被觸發,而不是:

webapp2.Route('/api/something/<something_id>', handlers.SomethingElseHandler) 

這OP引起類型錯誤與意外的關鍵字參數「something_id」一起出現。

一個非常困難的錯誤調試,但希望這可以幫助別人!

相關問題