这里有三个Pyramid view_callables,用于设置包含数据和两个图像文件的页面。麻烦的是,只返回了一个图像(文件响应)。我似乎一次只能返回一张图片。如果我取出其中一个文件响应vc,则返回其他图像。但是,如果我有两个文件respone vc那里,只返回第二个图像。在我用第二个vc覆盖的第一个vc中是否有一些对象?
是否有更好的方法可以返回两个图像(文件),即使在第一个# title
vc中也是如此?就像现在一样,即使它有效,我也必须从数据库中为同一个模板检索相同的文档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 }}">
答案 0 :(得分:1)
我认为你的问题是两个视图都有名为jpg的函数。
虽然覆盖这样的函数不是一个好主意,但我认为这对于view_config装饰器来说根本不是问题。我唯一能想到的是,而不是记录对函数的引用,view_config计算出虚线路径的内容并记录它。
无论如何,给视图函数赋予不同的名称,你应该没问题。