意外的关键字参数 python
An unexpected keyword argument python
我正在尝试实现一个简单的函数来点赞 post。
我使用 Google App Engine 定义了 4 个模型;用户、博客post、点赞、评论
以下是片段:
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)
我尝试使用以下方法调用方法来点赞 post:
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):
键 = db.Key.from_path('Blogpost', int(post_id))
博客post = db.get(关键)
return 博客post
我在尝试 运行 以上内容时遇到错误:
__init__() got an unexpected keyword argument 'blogpost'
谁能解释一下哪里出了问题?
您已将模型定义为
class LikePost(db.Model):
那么你已经定义了你的处理程序
class LikePost(Handler):
请注意,它们具有相同的名称。所以在你的 get
方法中,范围内的是你的 Handler 子类,它显然不希望它的 __init__
方法有 blogpost 关键字参数。最简单的解决方案,重命名其中之一或
from models import LikePost as LP
并使用它
我正在尝试实现一个简单的函数来点赞 post。 我使用 Google App Engine 定义了 4 个模型;用户、博客post、点赞、评论
以下是片段:
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)
我尝试使用以下方法调用方法来点赞 post:
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): 键 = db.Key.from_path('Blogpost', int(post_id)) 博客post = db.get(关键) return 博客post
我在尝试 运行 以上内容时遇到错误:
__init__() got an unexpected keyword argument 'blogpost'
谁能解释一下哪里出了问题?
您已将模型定义为
class LikePost(db.Model):
那么你已经定义了你的处理程序
class LikePost(Handler):
请注意,它们具有相同的名称。所以在你的 get
方法中,范围内的是你的 Handler 子类,它显然不希望它的 __init__
方法有 blogpost 关键字参数。最简单的解决方案,重命名其中之一或
from models import LikePost as LP
并使用它