2009-12-04 6 views
1

Voici mon modèle d'URL:Comment personnaliser l'URL des vues génériques basées sur la date?

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

et

(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'), 

Mais ils ont une erreur aime ceci:

object_detail() got an unexpected keyword argument 'category' 

S'il vous plaît aidez-moi. Merci!

Répondre

3

Je pense que vous devez écrire votre propre point de vue à la place du générique object_detail, quelque chose comme ça (non testé)

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}) 

Bien qu'il puisse être possible de le faire avec object_detail Je ne sais pas - J'utilise très rarement des vues génériques.

+0

Désolé, la fonction datetime.date n'accepte pas les variables. Ils veulent les entiers. – anhtran

+0

J'ai corrigé mon post avec quelques int (...) s qui pourraient fonctionner maintenant! –

0

Dans votre URL regex, tout ce qui est <brackets> est transmis à la vue générique en tant qu'argument mot-clé.

Le problème est que la vue générique que vous utilisez (object_detail) ne prend pas en charge tous ces arguments (à savoir, category).

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

Si vous avez besoin d'un argument category, juste envelopper la vue comme Nick suggéré ci-dessus et appeler cela de votre URLconf.

Questions connexes