金字塔 1.8 forbidden_view_config return 404

Pyramid 1.8 forbidden_view_config return 404

我有一个使用 Pyramid 1.8 的基本应用程序,我希望有一个 forbidden_view_config 来挑战客户端。

在我的 views.py 我有:

from pyramid.view import view_config
from pyramid.view import forbidden_view_config
from pyramid.httpexceptions import HTTPUnauthorized
from pyramid.security import forget

@view_config(route_name='home', renderer='templates/mytemplate.jinja2')
def my_view(request):
    return {'project': 'odkchallenge'}


@forbidden_view_config(route_name='carlos')
def auth_view(request):
    response = HTTPUnauthorized()
    response.headers.update(forget(request))
    return response

在我的 init.py 我有:

from pyramid.config import Configurator


def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(settings=settings)
    config.include('pyramid_jinja2')
    config.add_static_view('static', 'static', cache_max_age=3600)
    config.add_route('home', '/')
    config.add_route('carlos', '/carlos')
    config.scan()
    return config.make_wsgi_app()

但是当我去 http://localhost:6543/carlos 我得到:

404 Not Found The resource could not be found.

/carlos

我一直在查看有关 forbidden_view_config 的文档,它应该类似于 view_config。如果我将其更改为 view_config /carlos 则不会 return 404。知道为什么吗?或者我还需要包括什么?

在您粘贴的示例中,您使用的 forbidden_view_config 没有任何包含权限的视图,因此它不会被触发。相反,如果您使用 notfound_view_config,您至少会执行 auth_view 视图。