J'ai une application de base en utilisant Pyramid 1.8 où je veux avoir un forbidden_view_config pour défier le client.Pyramid 1.8 forbidden_view_config return 404
Dans mon views.py je:
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
Dans mon init.py je:
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()
Mais quand je vais à http://localhost:6543/carlos je reçois:
404 Non trouvé La ressource n'a pas pu être trouvée.
/carlos
Je cherchais à la documentation sur forbidden_view_config et il devrait être comme view_config. Si je le change en view_config/carlos ne retourne pas 404. Une idée pourquoi? ou quoi d'autre je dois inclure?
Pouvez-vous expliquer un peu plus loin? Comment ajouter des autorisations à une vue? ou pouvez-vous me diriger vers quelque part? – QLands
La vue interdite est exécutée lorsqu'une exception 'HTTPForbidden' est levée dans votre application, que vous pouvez faire manuellement ou que vous pouvez utiliser le système d'authentification pyramid pour que les exceptions soient levées automatiquement en fonction des autorisations de vue' @view_config (permission = ..) '. Le tutorial de répartition de sqlalchemy + url de Pyramid va dans ce sens et vaut la peine d'être lu si vous ne l'avez pas encore fait. –