如何自定义基于日期的通用视图的URL?

时间:2009-12-04 17:48:34

标签: django django-urls django-views

这是我的网址格式:

news_info_month_dict = {
    'queryset': Entry.published.filter(is_published=True),
    'date_field': 'pub_date',
    'month_format': '%m',
}

(r'^(?P<category>[-\w]+)/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[-\w]+).html$', 
    'object_detail', news_info_month_dict, 'news_detail'),

但他们有这样的错误:

object_detail() got an unexpected keyword argument 'category'

请帮帮我。谢谢!

2 个答案:

答案 0 :(得分:3)

我认为你必须用自己的观点来代替通用object_detail,这样的事情(未经测试)

import datetime

def view_entry(request, category, year, month, day, slug):
    date = datetime.date(int(year), int(month), int(day))
    entry = get_object_or_404(Entry, slug=slug, date=date, is_published=True, category=category)
    return render_to_response('news_detail', {'object': entry})

虽然可能可以使用object_detail进行此操作但我不知道 - 我很少使用通用视图。

答案 1 :(得分:0)

在您的网址正则表达式中,<brackets>中的所有内容都会作为关键字参数传递给通用视图。

问题是你正在使用的通用视图(object_detail)不支持所有这些参数(即category)。

More information about the object_detail generic view and the arguments it accepts.

如果您需要category参数,只需将视图包装为上面提到的Nick,并从您的URLconf调用该视图。