404 Ресурс не найден

Получение 404 Ресурс не найден при попытке получить доступ к одному элементу как к анонимному, то есть без аутентификации. Вместо этого я бы ожидал 403 Forbidden, так как у меня есть разрешение на настройку вида.

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

Для моих просмотров init установлен обход:

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

Представление прекрасно отображается, когда пользователь вошел в систему, но если нет, я бы хотел вместо этого получить Запрещенное представление.

1 ответ

Похоже, ваш контекст BookContainer с view_name из 8LjkOSzGSR67i1dnGUOg-Q, Это не соответствует вашему необходимому контексту BookResource с name из '' и, таким образом, будет 404, прежде чем разрешения проверяются. Вы, вероятно, хотите бросить name предикат от вашего view_config потому что вам, наверное, все равно, как зовут. Также выясните, почему контекст не тот, который вы ожидаете, основываясь на том, что происходит в вашем дереве обхода.

Другие вопросы по тегам