Python 金字塔1.8禁止查看配置返回404

Python 金字塔1.8禁止查看配置返回404,python,pyramid,basic-authentication,Python,Pyramid,Basic Authentication,我有一个使用Pyramid 1.8的基本应用程序,我希望有一个禁止的视图配置来挑战客户端 在my 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(r

我有一个使用Pyramid 1.8的基本应用程序,我希望有一个禁止的视图配置来挑战客户端

在my 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
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()
在我的init.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
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()
但当我去的时候,我得到:

404找不到资源找不到

/卡洛斯


我一直在看关于禁用的视图配置的文档,它应该类似于视图配置。如果我将其更改为view\u config/carlos,则不会返回404。知道为什么吗?或者我还需要包括什么?

在粘贴的示例中,您使用的是
禁止的\u视图\u配置
,没有任何包含权限的视图,因此不会触发。相反,如果您使用了
notfound\u view\u config
,您至少会执行
auth\u view
视图。

您能进一步解释一下吗?如何向视图添加权限?或者你能告诉我去哪里吗?当在你的应用程序中引发
httpoblimited
异常时,会执行禁止视图,你可以手动执行,也可以使用pyramid的身份验证系统根据查看权限自动引发异常
@view\u config(permission=…)
。金字塔的sqlalchemy+url调度教程对此进行了大量介绍,如果您还没有读过,那么值得一读。