2017-02-17 4 views
1

Ich versuche, eine einfache Funktion zu implementieren, um einen Beitrag zu mögen. Ich habe 4 Modelle mit Google App Engine definiert; Benutzer, Blogpost, Wie, KommentareEin unerwartetes Schlüsselwort Argument Python

unter die Schnipsel ist:

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) 

Ich habe versucht, die Methode aufzurufen, einen Beitrag gerne mit unter:

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') 

Der Verweis auf das Verfahren ist als folgen:

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 (self, post_id): key = db.Key .from_path ('Blogpost', int (post_id)) Blogpost = db.get (key) return Blogpost

ich einen Fehler habe bei dem Versuch, die oben auszuführen:

__init__() got an unexpected keyword argument 'blogpost' 

Jeder erklären kann, was ging schief ?

Antwort

0

Sie haben Ihr Modell definiert als

class LikePost(db.Model): 

Dann Sie Ihre Handler definiert hat

class LikePost(Handler): 

Beachten Sie, dass sie den gleichen Namen haben. Also innerhalb Ihrer get Methode, was im Umfang ist, ist Ihre Handler-Unterklasse, die offensichtlich kein Blogpost-Schlüsselwort-Argument zu seiner __init__ Methode erwartet. Einfachste Lösung, benennen eine oder die andere oder

from models import LikePost as LP 

und verwenden, die

+0

verschossen, dass ein Teil, danke, löste es –

+0

Sie sind willkommen und froh über Hilfe gewesen zu sein – e4c5

Verwandte Themen