【问题标题】:An unexpected keyword argument python一个意外的关键字参数python
【发布时间】:2017-07-06 21:50:12
【问题描述】:

我正在尝试实现一个简单的功能来点赞帖子。 我有 4 个使用 Google App Engine 定义的模型;用户、博文、赞、评论

下面是sn-ps:

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)) 博文 = db.get(key) 返回博文

尝试运行上述内容时出现错误:

__init__() got an unexpected keyword argument 'blogpost'

任何人都可以解释出了什么问题?

【问题讨论】:

    标签: python html webapp2


    【解决方案1】:

    您已将模型定义为

    class LikePost(db.Model):
    

    那么你已经定义了你的处理程序有

    class LikePost(Handler):
    

    请注意,它们具有相同的名称。因此,在您的 get 方法内,范围内是您的 Handler 子类,它显然不希望它的 __init__ 方法有 blogpost 关键字参数。最简单的解决方案,重命名一个或另一个或

     from models import LikePost as LP
    

    并使用它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 2020-10-13
      • 2012-11-10
      • 2016-09-12
      • 2018-04-26
      • 1970-01-01
      相关资源
      最近更新 更多