2017-02-17 10 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 

защиту 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, который, по-видимому, не ожидает, что аргумент ключевого слова blogpost относится к методу __init__. Простейшее решение переименовать одну или другую или

from models import LikePost as LP 

и использовать это

+0

Пропущенный, что часть, спасибо, решил его –

+0

вы можете и рад был помочь – e4c5