404找不到资源
问题描述:
获取404尝试以匿名方式访问单个项目时未找到资源,即未通过身份验证。我期望改为403 Forbidden,因为我已经在视图配置上设置了权限。404找不到资源
class BookShow(FormView):
"""Show one instance of a model."""
resource_buttons = [...]
@view_config(route_name="book", context=BookResource, name="", renderer="site/workspace/book/single.html", permission="authenticated")
def book(self):
...
return locals()
我的意见初始化已遍历设置为:
self.config.add_route('book', '/book/*traverse', factory="bookstoreapp.views.bok.views.book_container_factory")
日志显示,该航线是匹配的,虽然然后显示404 debug_notfound:
2017-04-08 12:36:09 mamachine pyramid_debug[685] DEBUG route matched for url http://localhost:6543/book/8LjkOSzGSR67i1dnGUOg-Q; route_name: 'book', path_info: '/book/8LjkOSzGSR67i1dnGUOg-Q', pattern: '/book/*traverse', matchdict: {'traverse': ('8LjkOSzGSR67i1dnGUOg-Q',)}, predicates: ''
2017-04-08 12:36:09 mamachine pyramid_debug[685] DEBUG debug_notfound of url http://localhost:6543/book/8LjkOSzGSR67i1dnGUOg-Q; path_info: '/book/8LjkOSzGSR67i1dnGUOg-Q', context: <bookstoreapp.views.book.views.BookContainer object at 0x7eff6d5d1fd0>, view_name: '8LjkOSzGSR67i1dnGUOg-Q', subpath:(), traversed:(), root: <bookstoreapp.views.book.views.BookContainer object at 0x7eff6d5d1fd0>, vroot: <bookstoreapp.views.book.views.BookContainer object at 0x7eff6d5d1fd0>, vroot_path:()
视图渲染精细当用户只是在那个时候登录的时候,我想获取Forbidden视图。
答
它看起来像你的情况是BookContainer
与view_name
的8LjkOSzGSR67i1dnGUOg-Q
。这与BookResource
所需的上下文不匹配,name
的''
因此在检查权限之前会是404。您可能想从view_config
中删除name
谓词,因为您可能不在意名称是什么。还要根据遍历树中发生的事情弄清楚为什么上下文不是您所期望的。