0

ホームページのビュー構成として、これを views.py ファイルに入れています。

@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 {}        

また、edit.pt テンプレートのフォームは次のとおりです。

<form action="/view_page" method="post">
    <div>
      <input type="text" name="name"/>
    </div>
    <div>
      <input type="text" name="body"/>
    </div>
<label for="stl">Stl</label>
<input name="stl" type="file" value="" />
<input type="submit" name='form.submitted' value="Save"/>
</form>     

私のinit .pyファイルにもあります

    config.add_route('home_page', '/')
    config.add_route('view_page', '/{pagename}')

今フォームを送信すると、localhost:6543/view_page に移動しようとします。これは、view_page リソースまたはそれにつながるルートがないため、404 を返します。代わりに、localhost:6543/(フォームの最初の入力ボックスとして作成したばかりのページの名前) に移動する必要があります。これどうやってするの?

編集:私はそれを

return HTTPFound(location=request.route_url('front_page',pagename=name))

そして、それはまだ /view_page に行きます。front_page という名前のルートはないので、少なくともエラーをスローすると思われます。

また、どこで情報を見つけたのか教えていただけると大変ありがたいです。私はhttp://docs.pylonsproject.org/projects/pyramid/en/1.4-branch/api/request.html?highlight=request.route_url#pyramid.request.Request.route_urlを見てきましたが、そうではないようですそこから用途を見つけます。

編集:パス名の代わりにアセット仕様を使用する必要がありますか? それで

return HTTPFound(Location=request.route_url('tutorial:templates/view.pt','/{pagename}'))

また、構文に非常に役立つと思われるこの記事に取り組んでいます: http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/urldispatch.html#urldispatch-chapter

4

3 に答える 3

5

フォームは「/」に送信する必要があると思います。

<!-- where your home_page route is waiting for the POST -->
<form action="/" method="post">

以前の回答で、これは正しいように見えます:

return HTTPFound(location=request.route_url('view_page', pagename=name))
于 2013-02-03T04:24:03.633 に答える
0

あなたが与えるリンクからそれはあるべきです

    return HTTPFound(location=request.route_url('view_page',pagename=name))

このルートを追加したとき

    config.add_route('view_page', '/{pagename}')

前に変数名を設定します

    name= request.params['name']
于 2013-02-01T01:13:20.200 に答える