簡體   English   中英

一個意外的關鍵字參數python

[英]An unexpected keyword argument python

我正在嘗試實現一個簡單的函數來喜歡帖子。 我有4個使用Google App Engine定義的模型; 用戶,Blogpost,喜歡,評論

以下是片段:

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

嘗試運行上述操作時出錯:

__init__() got an unexpected keyword argument 'blogpost'

誰能解釋出了什么問題?

您已將模型定義為

class LikePost(db.Model):

然后你已經定義了你的處理程序了

class LikePost(Handler):

請注意,它們具有相同的名稱。 所以在你的get方法中,你的Handler子類是什么,顯然不希望它的__init__方法有一個blogpost關鍵字參數。 最簡單的解決方案,重命名其中一個或

 from models import LikePost as LP

並使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM