以下是我用于表单的代码,用于将新案例输入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'
答案 0 :(得分: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, ...})
,类似于任何其他渲染调用。
答案 1 :(得分:1)
遇到同样的问题后,我发现我的问题出在webapp2.WSGIApplication路由定义中。
我已将我的路线定义如下,例如:
webapp2.Route('/api/something/anEndpoint', handlers.SomethingEndpointHandler)
然而,甚至没有达到该路线,因为另一条路线捕获了路线列表中早先定义的正则表达式关键字,而是被触发:
webapp2.Route('/api/something/<something_id>', handlers.SomethingElseHandler)
这导致OP中的TypeError出现意外的关键字参数&#39; something_id&#39;。
一个非常难以调试的错误,但希望这有助于某人!