2

下面是我用于将新案例输入 GAE 数据存储的表单的代码。当我尝试输入表单时,我收到下面的类型错误,说我使用了意外的关键字参数。我是 python 新手,GAE 有人知道我做错了什么吗?

class Case(db.Model):
    user = db.StringProperty(required = True)
    title = db.StringProperty(required = True)
    facts = db.TextProperty()
    holding = db.TextProperty()
    rule_of_law = db.TextProperty()
    general_notes = db.TextProperty()
    key_concepts = db.TextProperty()        

class NewCase(Handler):
    def get(self,title="",
            facts="",
            holding="",
            rule_of_law="",
            general_notes="",
            key_concepts="",
            error=""):

        if self.user:
            self.render('newcase.html', title=title,
                        facts=facts,
                        holding=holding,
                        rule_of_law=rule_of_law,
                        general_notes=general_notes,
                        key_concepts=key_concepts,
                        error=error)
        else:
            self.redirect('/login')

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

    user = self.read_secure_cookie('user_id')    
    self.title = self.request.get('title')
    self.facts = self.request.get('facts')
    self.holding = self.request.get('holding')
    self.rule_of_law = self.request.get('rule_of_law')
    self.general_notes = self.request.get('general_notes')
    self.key_concepts = self.request.get('key_concepts')

    if self.title:
        c = Case(user = user,
                 title = self.title,
                 facts = self.facts,
                 holding = self.holding,
                 rule_of_law = self.rule_of_law,
                 general_notes = self.general_notes,
                 key_concepts = self.key_concepts)

        c.put()

        self.redirect('/%s' % c.key().id())

    else:
        error = "You must enter a title."
        self.render('newcase.html',title = self.title,

我得到的错误:

File "C:\Users\Chris\Documents\Web Apps\legalstudybuddy\main.py", line 233, in post
    key_concepts = self.key_concepts)
TypeError: __init__() got an unexpected keyword argument 'rule_of_law'
4

2 回答 2

2

我假设您正在使用 Django 模板。来自:https ://developers.google.com/appengine/docs/python/gettingstarted/templates

template.render(path, template_values)获取模板文件的文件路径和值字典,并返回呈现的文本。

请注意,render它只接受两个参数:您提供的模板路径,以及包含模板期望的所有其他值的单个字典。

您将所有这些值作为参数提供给它,而不是打包到字典中。

改变:

self.render('newcase.html', title=title, facts=facts, holding=holding, ... )

至:

self.render('newcase.html', {title=title, facts=facts, holding=holding, ...})

对于任何其他渲染调用也是如此。

于 2012-12-25T09:23:27.460 回答
1

遇到同样的问题后,我发现我的问题出在 webapp2.WSGIApplication Route 定义中。

我已将我的路线定义如下,例如

webapp2.Route('/api/something/anEndpoint', handlers.SomethingEndpointHandler)

但是,甚至没有到达该路由,因为正在触发另一个捕获正则表达式关键字的路由,之前在路由列表中定义:

webapp2.Route('/api/something/<something_id>', handlers.SomethingElseHandler)

这导致 OP 中的 TypeError 出现意外的关键字参数“something_id”。

一个非常难以调试的错误,但希望这对某人有所帮助!

于 2014-07-10T23:20:47.077 回答