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)テンプレート ファイルへのファイル パスと値のディクショナリを取り、レンダリングされたテキストを返します。

は 2 つの引数のみを取ることに注意してください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)

これにより、予期しないキーワード引数「something_id」で OP の TypeError が表示されました。

デバッグが非常に難しいエラーですが、これが誰かの役に立てば幸いです!

于 2014-07-10T23:20:47.077 に答える