-1

データと2つの画像ファイルでページを設定する3つのピラミッドview_callablesがあります。問題は、画像(ファイル応答)の1つだけが返されることです。一度に返せる画像は1枚だけのようです。ファイル応答vcの1つを削除すると、他の画像が返されます。ただし、両方のファイルがvcを応答している場合は、2番目のイメージのみが返されます。2番目のVCで上書きしている最初のVCにオブジェクトがありますか?

# title最初のVC内であっても、両方のイメージ(ファイル)を返すためのより良い方法はありますか?今のところ、うまくいったとしても、1つのテンプレートに対して同じドキュメントをデータベースから3回取得する必要があります。アドバイスや手がかりをいただければ幸いです。

# title
@view_config(
        route_name='title',
        renderer='templates/titles/title.jinja2')
def title(request):
    title = Title().find_one({'_id':ObjectId(request.matchdict['_id'])})
    result = dict(
            user = request.user,
            title = title)
    return result

# view title image
@view_config(route_name="view_title_image")
def jpg(request):
    fd = Title().find_one({'_id':ObjectId(request.matchdict['title_id'])}).TitleImage
    response = Response(content_type='application/jpg')
    response.app_iter = fd.File
    print fd
    return response

# view trailer thumbnail
@view_config(route_name="view_trailer_thumbnail")
def jpg(request):
    fd = Title().find_one({'_id':ObjectId(request.matchdict['title_id'])}).TrailerThumbnail
    response = Response(content_type='application/jpg')
    response.app_iter = fd.File
    print fd
    return response

からのルート設定は次の__init__とおりです。

# title
config.add_route('title', '/title/{_id}')

# view title image
config.add_route('view_title_image', '/view/title_image/{title_id}')

# view title image
config.add_route('view_trailer_thumbnail', '/view/trailer_thumbnail/{title_id}')

これは、Jinja2テンプレートでの使用方法です。

<img src="/view/title_image/{{ title._id }}">

<img src="/view/trailer_thumbnail/{{ title._id }}">
4

1 に答える 1

1

あなたの問題は、両方のビューにjpgという名前の関数があることだと思います。

そのような関数を上書きするのは良い考えではありませんが、view_config デコレーターにとってはまったく問題ないと思っていたでしょう。私が考えることができる唯一のことは、関数への参照を記録するのではなく、view_config が点線のパスが何であるかを理解し、それを記録することです。

とにかく、ビュー関数に別の名前を付ければ問題ありません。

于 2013-02-11T00:35:08.570 に答える