Django基于日期的通用视图:如何访问变量

Django基于日期的通用视图:如何访问变量,django,django-generic-views,Django,Django Generic Views,我有一系列链接到Django的通用日期视图的URL。在extra_context参数中,我想根据URL中的年/月变量传入queryset,但我不确定如何访问它们。例如,在 url(r'^archive/(?P<year>20[1-2][0-9])/?$', archive_year, {'queryset': Article.objects.all(), 'date_field': 'publication_date', 'template_name': 'articles/arch

我有一系列链接到Django的通用日期视图的URL。在extra_context参数中,我想根据URL中的年/月变量传入queryset,但我不确定如何访问它们。例如,在

url(r'^archive/(?P<year>20[1-2][0-9])/?$', archive_year,
{'queryset': Article.objects.all(),
'date_field': 'publication_date',
'template_name': 'articles/archive-date-list.html',
'extra_context': {'content': 'articles'}},
name='article_archive'),
url(r'^archive/(?P20[1-2][0-9])/?$,存档年份,
{'queryset':Article.objects.all(),
“日期字段”:“发布日期”,
“模板名称”:“articles/archive date list.html”,
'额外上下文':{'content':'articles'},
name='article_archive'),

我想加上最近的5篇文章,其中出版日期为gte
year
和lt
year+1
。理想情况下,集合将在每个请求上查找,而不仅仅是在编译时缓存。我是否最好为此/扩展视图编写一个上下文处理器?

您可以围绕通用视图创建一个包装器:

# myapp/views.py

def my_archive_year(request, year):
    # Logic to get the articles here

    return archive_year(request,
        year=year,
        date_field='publication_date',
        template_name='articles/archive-date-list.html',
        extra_context = {'content': articles}
    )

# urls.py

url(r'^archive/(?P<year>20[1-2][0-9])/?$', 'myapp.views.my_archive_year', name='article_archive'),
#myapp/views.py
定义我的存档年份(请求,年份):
#在这里获取文章的逻辑
返回存档年份(请求,
年=年,
日期\字段=“发布日期”,
template_name='articles/archive date list.html',
额外上下文={'content':articles}
)
#url.py
url(r'^archive/(?P20[1-2][0-9])/?$,'myapp.views.my_archive\u year',name='article\u archive'),