2017-01-22 11 views
1

나는 forbidden_view_config를 사용하여 클라이언트에 도전 할 피라미드 1.8을 사용하는 기본 응용 프로그램을 가지고 있습니다. 내 views.py에서피라미드 1.8 forbidden_view_config 반환 404

내가 가진 :

내 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() 

하지만 http://localhost:6543/carlos에 갈 때 내가 얻을 :

(404) 찾을 수 없음 리소스를 찾을 수 없습니다. 내가 forbidden_view_config에 대한 문서에서 찾고 그것을 view_config 같이해야

/카를로스. view_config/carlos로 변경하면 404가 반환되지 않습니다. 그 이유는 무엇입니까? 또는 내가 무엇을 포함시켜야 하는가?

답변

1

붙여 넣은 예제에서는 사용 권한이 포함 된보기가 없으므로 forbidden_view_config을 사용하고있어 트리거되지 않습니다. 대신 notfound_view_config을 사용하면 auth_view보기를 실행해야합니다.

+0

조금 더 설명 할 수 있습니까? 보기에 사용 권한을 추가하려면 어떻게합니까? 아니면 나를 어디로 안내 할 수 있니? – QLands

+0

금지 된보기는 앱에서'HTTPForbidden' 예외가 발생했을 때 실행됩니다. 수동으로 할 수 있습니다. 또는 pyramid의 인증 시스템을 사용하여보기 권한'@view_config (permission = ..)'에 따라 자동으로 예외를 발생시킬 수 있습니다. Pyramid의 sqlalchemy + url 디스패치 자습서는이 양이 적지 만 아직 읽지 않은 경우 읽을 가치가 있습니다. –