You are using an outdated browser
правильный способ обработки URL
«традиционный» способ
Route → View
Route → View
/user/vpupkin/blog/42/like
/user/vpupkin/blog/42/like
/user/vpupkin/blog/42/like
/user/vpupkin/blog/42/like
/user/vpupkin/blog/42/like
/user/vpupkin/blog/42/like
{'user_id': 'vpupkin', 'post_id': '42'}
Resource + View name → View
Resource + View name → View
Resource + View name → View
@view_config(context=Resource, name='someview')
def someview(context, request):
Resource
Resource
Resource
Resource
SiteRoot['user']
Users['{user_id}']
User['blog']
Blog['{post_id}']
BlogPost
/user/vpupkin/blog/42/like
['user', 'vpupkin', 'blog', '42', 'like']
context = root_factory()# <SiteRoot object>
['vpupkin', 'blog', '42', 'like']
context = context['user']# <Users object>
['blog', '42', 'like']
context = context['vpupkin']# <User object>
['42', 'like']
context = context['blog']# <Blog object>
['like']
context = context['42']# <BlogPost object>
[]
context = context['like']# <BlogPost object>
KeyError: 'like'
[]
context = BlogPost('42')
view_name = 'like'
Зачем так сложно?
Resource + views = изолированный компонент
Blog index, archive
BlogPost show, create, edit, delete
SiteRoot
Users
User
Blog
Groups
Group
Blog
Blog
SiteRoot
Users
User
Blog
Groups
Group
Blog
Blog
SiteRoot
Users
User
Blog
Groups
Group
Blog
Blog
Mixins
Commentable add_comment, delete_comment
Likeable like, unlike
Commentable add_comment, delete_comment
Likeable like, unlike
Commentable add_comment, delete_comment
Likeable like, unlike
Commentable add_comment, delete_comment
Likeable like, unlike
Бонусы
Простой и логичный реверс-роутинг
resource_url(resource, view_name)
ACL
Blog
BlogPost
Blog
BlogPost
Тесты
Спасибо за внимание