Как настроить URL-адрес общих представлений на основе даты? - PullRequest
1 голос
/ 04 декабря 2009

Вот мой шаблон URL:

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 ]

3 голосов
/ 04 декабря 2009

Я думаю, вам придется написать собственный вид вместо общего 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 Я не знаю - я очень редко использую общие представления.

0 голосов
/ 04 декабря 2009

В вашем регулярном выражении URL все в <brackets> передается в общее представление в качестве аргумента ключевого слова.

Проблема в том, что используемый вами общий вид (object_detail) не поддерживает все эти аргументы (а именно, category).

Дополнительная информация о универсальном представлении object_detail и его аргументах.

Если вам нужен аргумент category, просто оберните представление, как предложено выше Ником, и вызовите его из вашего URLconf.

...