[Django] Generic views -> lists

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
TeeJaay
User
Beiträge: 4
Registriert: Montag 29. Oktober 2007, 13:19

Moin,

ich habe mir die letzten Tage mal Django angeschaut und muss erstmal sagen das mir Konzept richtig gut gefällt. Ich habe wie wohl alle, die sich mit Django beschäftigt haben dieses djangobook durchgelesen und bin im Verlauf auf einige Probleme gestoßen. Bis zum Kapitel 9 ging alles Reibungslos, alles ist toll erklärt doch dann wird dieses Buch sehr nachlässig was sich auch in den vielen Kommentaren zeigt. Wie dem auch sei wie viele andere habe im Kapites 9 schwierigkeiten die generischen views in funktionierende Beispiele zu bringen. Meine Frage an die Comm. ist nun , ob sich schon mal jemand damit befasst hat und vielleicht ein Besipiel liefern kann.

Ich bin so ziemlich exact nach den Vorgaben der Django Leute vorgegangen.

1. Model

Code: Alles auswählen

class Publisher(models.Model):
    name = models.CharField(maxlength=30)
    address = models.CharField(maxlength=50)
    city = models.CharField(maxlength=60)
    state_province = models.CharField(maxlength=30)
    country = models.CharField(maxlength=50)
    website = models.URLField()

class Author(models.Model):
    salutation = models.CharField(maxlength=10)
    first_name = models.CharField(maxlength=30)
    last_name = models.CharField(maxlength=40)
    email = models.EmailField()
    headshot = models.ImageField()

class Book(models.ModelField):
    title = models.CharField(maxlength=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()
2. url.py editieren

Code: Alles auswählen

from django.conf.urls.defaults import *
from django.views.generic import list_detail, date_based, create_update
from books.models import Publisher, Author, Book

author_list_info = {
    'queryset' :   Author.objects.all(),
    'allow_empty': True,
}

author_detail_info = {
    "queryset" : Author.objects.all(),
    "template_object_name" : "author",
}


urlpatterns = patterns('',
	(r'authors/$', list_detail.object_list, author_list_info),
	(r'^authors/(?P<object_id>\d+)/$', list_detail.object_detail, author_detail_info),
    (r'^admin/', include('django.contrib.admin.urls')),
)
Mein Problem bezieht sich nun darauf was hier eigendlich passieren soll. Denn wenn ich es richtig verstanden habe: "The list-detail generic views (in the module django.views.generic.list_detail) handles the common case of displaying a list of items at one view, and individual “detail” views of those items at another" dann werden mir Daten zur Verfügung gestellt, nicht aber eine Ausgabe erzeugt.

Problem an der Sache wie soll so ein Template ausschauen. Wie heisst das array durch das ich iterieren kann. Für die Detail view, wurde ja noch eine Var genannt die einem das Author Object (oder __str__) zurück gibt, aber für die "List" sucht man vergeblich. Wenn man jetzt denkt das es {{ author_list }} ist, dann liegt man leider daneben.

Wie man sieht bin ich ziemlicher Anfänger in Sachen Django und würde mich freuen wenn mir jemand helfen könnte.

Mfg

edit


warum schreibe ich das hier im Python Forum, da es anscheinend keine deutschsprachigen Django Foren gibt. Ich hoffe das es kein Problem ist.

EDIT (jens): quote -> code
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo TeeJaay, willkommen im Forum,

natürlich darfst du in diese Forum auch Django-Fragen stellen. Dazu ist es ja schließlich da und Django ist ja auch ein Python-Framework.

Ich würde das "template_object_name" und folgende Variablen im Template nutzen:

`django.views.generic.list_detail.object_list`: `object_list`
`django.views.generic.list_detail.object_detail` : `object`

Steht so in der Dokumentation drin.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
TeeJaay
User
Beiträge: 4
Registriert: Montag 29. Oktober 2007, 13:19

vielen dank object_list war die richtige :)

schaun mehr mal wie es jetzt weitergeht. Das war bestimmt nicht meine letzte Frage

G Tee

edit
template_object_name
Designates the name of the template variable to use in the template context. By default, this is 'object'. Views list list more than one objec will append '_list' to the value of this parameter.


steht ja hier
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Den betreffenden Variablennamen findet man in der Dokumentation zu Generic Views jeweils unter "Template Context". Ist also (inzwischen) anständig dokumentiert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten