2017-02-17 24 views
1

我試圖實現一個簡單的函數來喜歡帖子。 我有4個使用Google App Engine定義的模型;用戶,博文,就像,評論一個意想不到的關鍵字參數python

下面

是片段:

class LikePost(db.Model): 
    user  = db.ReferenceProperty(User) 
    blogpost = db.ReferenceProperty(Blogpost) 
    date  = db.DateTimeProperty(auto_now_add = True) 

class Comment(db.Model): 
    user  = db.ReferenceProperty(User) 
    blogpost = db.ReferenceProperty(Blogpost) 
    content  = db.TextProperty(required = True) 
    date  = db.DateTimeProperty(auto_now_add = True) 

我試圖調用的方法使用以下到喜愛的信息:

class LikePost(Handler): 
    def get(self,post_id): 
     blogpost = self.get_blogpost(post_id) 
     user = self.get_user_object() 
     if blogpost and user: 
      like = LikePost(user = user, blogpost = blogpost) 
      like.put() 
      self.redirect('/%s' % post_id) 
     else: 
      self.redirect('/login') 

給此方法的參考文獻是作爲遵循:

def get_user_object(self): 
     cookie = self.request.cookies.get('user_id') 
     if cookie: 
      user_id = check_secure_val(cookie) 

      if user_id: 
       user_id = cookie.split('|')[0] 
       key = db.Key.from_path('User', int(user_id)) 
       user = db.get(key) 
       return user 

DEF get_blogpost(個體,POST_ID): 鍵= db.Key .from_path( '博文',INT(POST_ID)) 博文= db.get方法(鑰匙) 回報的博文

我試圖運行上面的時候會出現錯誤:

__init__() got an unexpected keyword argument 'blogpost' 

任何人都可以解釋什麼出錯 ?

回答

0

您已經定義爲

class LikePost(db.Model): 

那麼您已經定義了處理器的型號有

class LikePost(Handler): 

注意到它們具有相同的名稱。因此,在你的get方法中,你的Handler子類的範圍是什麼,它顯然不期望博客文章關鍵字參數爲__init__方法。簡單的解決方案,重命名一個或另一個或

from models import LikePost as LP 

,並使用該

+0

錯過了一部分,謝謝,解決了這個問題 –

+0

你是歡迎和高興一直幫助 – e4c5

相關問題