一个基于类的视图对象,用于多个URL,具体取决于参数

时间:2016-07-04 18:54:47

标签: python django

我有多个网址,其任务几乎完全相同(生成一个带有相应上下文的列表页面)。所以我的urlpatterns就像:

url('^by-country/(?<arg1>\w+)', MyO.as_view(), name='by-country'),
url('^by-period/(?<arg1>\w+)', MyO.as_view(), name='by-period'),
url('^by-age/(?<arg1>\w+)', MyO.as_view(), name='by-age')

有没有办法在基于一个类的视图中传递by-blabla字符串而不将其作为urlpatterns中的第二个正则表达式命名参数?

由于我使用View派生类(即MyO),除了已经声明的属性(例如template_name)之外,我无法传递任何内容。那么,有没有干净的方法呢?

1 个答案:

答案 0 :(得分:1)

所有url模式都接受第三个位置参数,该参数是传递给视图的额外参数的字典,这些参数不是从正则表达式本身派生的。所以:

url('^by-country/(?<arg1>\w+)', MyO.as_view(), {'category': 'by-country'}, name='by-country'),