0

ピラミッド アプリケーションのホームページの呼び出し可能なビューを作成しようとしています。ここで呼び出し可能なビューについて読んでいます: http://docs.pylonsproject.org/projects/pyramid/en/1.0-branch/narr/views.html

しかし、最後に常に return ステートメントが必要なようです。私はこれを理解していません。ビュー callable が何も返さないようにします。私が英語で(Pythonコードではなく)書くつもりなら、私は置くだろう

@view_config(route_name='home_page', renderer='templates/edit.pt')
def home_page(request):
    if 'form.submitted' in request.params:
        name= request.params['name']
        body = request.params['body']
        page=Page(name,body)
        DBSession.add(page)
        return HTTPFound(Location=request.route_url('view_page',pagename=name))
    return {the edit.pt template i mentioned in the first line}

しかし、これを行う方法はないようです。文字列か辞書か何かを返さなければなりません。これをpythonに伝えるにはどうすればよいですか。したがって、人々がそのフォームを送信すると、その HTTPFound ステートメントが返されますが、編集テンプレートをレンダリングするだけではない場合です。

4

1 に答える 1

5

まず、最新のPyramidドキュメントバージョン(Pyramidバージョン1.4の場合)http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/views.htmlを使用します(最新のPyramidバージョンを使用していると想定しているため)。

returnステートメントに関しては、カメレオンテンプレートファイル(edit.pt)がそれを期待しているため、空であっても、通常returnは辞書です。次の行の関数に、辞書をedit.ptに渡すように指示します。これにより、テンプレートエンジンがテンプレート内の変数を置き換えることができます。@view_config(renderer='templates/edit.pt')

HTTPFound()一方、テンプレートをバイパスしrendererの引数@view_config()は無視されます。つまり 、テンプレートは使用されません)、指定する別のルートへの内部リダイレクト__init__.pyを実行します。これで、その新しいルートがテンプレート/レンダラーを使用するかどうかは@view_config、レンダラーをスキップした前の関数から独立しています。

return最後の行のステートメントは、入力するテンプレートに変数がない場合に使用する必要がありreturn {}ます。

必要に応じて、これをさらに明確にする方法を教えてください。

于 2013-01-30T04:40:27.767 に答える