-1

这是三个 Pyramid view_callables,它们设置了一个包含数据和两个图像文件的页面。麻烦的是,只返回一张图像(文件响应)。看来我一次只能返回一张图像。如果我拿走其中一个文件响应 vc,则返回其他图像。但是,如果我有两个文件响应 vc,则只返回第二个图像。我用第二个 vc 覆盖的第一个 vc 中是否有一些对象?

有没有更好的方法来返回两个图像(文件),即使在第一个# titlevc 中?就像现在一样,即使它有效,我也必须为一个模板从数据库中检索相同的文档 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 回答