创建GAE实体时出错

2024-04-19 08:53:22 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图在GAE中提交一个新实体时,我收到了以下错误消息。你知道吗

File "C:\Users\Chris\Documents\Web Apps\legalstudybuddy\main.py", line 179, in post
    c = Courses(user=user, title=title)
TypeError: __init__() got an unexpected keyword argument 'user'

下面是我的Python代码:

class Courses(db.Model):
    user = db.StringProperty(required = True)
    title = db.StringProperty(required = True)
    created = db.DateTimeProperty(auto_now_add = True)

class Courses(Handler):
    def get(self, courses="", title="", signup_username="", login_logout=""):

        if not self.user:
            self.redirect('/login')

        user = str(self.read_secure_cookie('user_id'))
        courses = db.GqlQuery('SELECT * from Courses  WHERE user = :user ORDER BY created DESC', user=user)

        signup_username, login_logout = self.user_check()

        self.render('courses.html', courses=courses,
                    title=title,
                    signup_username=signup_username,
                    login_logout=login_logout)

    def post(self):
        if not self.user:
            self.redirect('/login')

        user = str(self.read_secure_cookie('user_id'))
        title = self.request.get('title')

        if title:
            c = Courses(user=user, title=title)
            c.put()

        self.redirect('/courses')

意外的关键字参数来自创建实体,而不是来自django模板。任何帮助都将不胜感激。你知道吗


Tags: self实体truedbiftitleusernamelogin
1条回答
网友
1楼 · 发布于 2024-04-19 08:53:22

你定义了Courses两次。作为模型:

class Courses(db.Model):
    user = db.StringProperty(required = True)
    title = db.StringProperty(required = True)
    created = db.DateTimeProperty(auto_now_add = True)

但作为处理者:

class Courses(Handler):
    # code

因为您定义了第二个处理程序,所以它在当前名称空间中存储为Courses。例如:

In [1]: class Courses(object):
   ...:     a = 'First Courses'
   ...:     
   ...:     

In [2]: class Courses(object):
   ...:     a = 'Second Courses'
   ...:     
   ...:     

In [3]: Courses.a
Out[3]: 'Second Courses'

我建议更改处理程序的名称,这样您就不会遇到现在遇到的冲突(当您调用Courses(user=user)时,它试图调用处理程序而不是模型)。你知道吗

相关问题 更多 >