Seite 1 von 1

Django: werte aus urlpatterns in generic view

Verfasst: Dienstag 4. November 2008, 00:28
von zero-one
hi ihr lieben leute,

Ich frickel grad nen bissle mit django rum und frage mich wie ich folgendes hinbekomme:

Code: Alles auswählen

from django.conf.urls.defaults import *

from models.entry import Entry

startpage = {
	'queryset': Entry.objects.order_by('-created_at')[0:10],
	'template_name' : "blog/index.html",
}

category_set = {
	'queryset': lambda category: Entry.objects.filter(category__permalink_exact=category).order_by('-created_at')[0:10],
	'template_name': 'blog/category.html'
}

show_entry = {
	'slug_field': 'permalink',
	'template_name': 'blog/show_entry.html'
}

urlpatterns = patterns('',
	url(r'^$', 'django.views.generic.list_detail.object_list', startpage, name='start'),
	url(r'(?P<category>[\d\w-]+)', 'django.views.generic.list_detail.object_detail', category_set, name='category'),
	url(r'(?P<category>[\d\w-]+)/(?P<permalink>[\d\w-]+)$', 'django.views.generic.list_detail.object_detail', name='show_entry'),
)
Wie bekomm ich die Category aus dem regexp in das dict zum queryset?

waere toll wenn jemand ne Idee haette ... das muss doch irgendwie schoen gehen ... sollte doch was recht gewohnliches und haeufig benutzes sein...

gruessle

P.S. das mit dem lambda was ich grad stehen hab geht nicht

Verfasst: Dienstag 4. November 2008, 10:09
von .robert
Ich würde eine eigene view-Funktion dafür basteln.

Verfasst: Mittwoch 5. November 2008, 10:06
von sma
Ein generic view kann das nicht. Diese sind aber so simpel, dass ich nie wirklich verstanden habe, was die großartig einsparen und würde daher einfach einen eigenen bauen. Du kannst ja auch dann an das Original deligieren:

Code: Alles auswählen

from django.views.generic.list_detail import object_list

def v(request, queryset, category=None, **kwargs):
    if category: queryset = queryset.filter(category=category)
    return object_list(queryset, **kwargs)
Übrigens, \w enthält \d.

Stefan