Ich habe gerade begonnen mich mit Django auseinanderzusetzen und als erstes ein Tutorial benutzt welches eine News-Seite erstellt. Folgendes ist passiert. Datenbank definiert und erstellt, Admin Seite auch ok, Einträge vorgenommen. Das Problem ist folgendes: Ich versuche nun eine view zu erstellen die auf ein template zurückgreift. Ich bekomme auch eine Ausgabe, nur die ist leider leer, es werden keine Daten ausgegebne. Gebe ich den code der Funktion in der Shell ein scheint alles zu klappen.
Am besten ich poste euch mal den Code
urls.py
Code: Alles auswählen
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^messages/$', 'django02.news.views.messages'),
(r'^messages/(?P<message_id>\d+)/$', 'django02.news.views.details'),
(r'^admin/', include('django.contrib.admin.urls')),
)
Code: Alles auswählen
# Imports
from django02.news.models import Messages, Comments
from django.http import HttpResponse
from django.template import Context, loader
# fuer die Shortcut-Fkt, anstatt import von http404 und langer version
from django.shortcuts import get_object_or_404
# Fkt. für die Darstellung aller Meldungen als Liste
def messages(request):
template = loader.get_template("news/meldungen.html")
context = Context({"meldungen" : Messages.objects.all()})
return HttpResponse(template.render(context))
def details(request,message_id):
# langer Weg
# try:
# m = Messages.objects.get(id=message_id)
# except Messages.DoesNotExist:
# raise Http404
# kurz
m = get_object_or_404(Messages, id=message_id)
lines= [
"Titel: '%s' vom %s" % (m.title, m.timestamp),
"Text: %s\n" % m.content,
"-" * 30 + "",
"Kommentare:",
""]
lines += ["%s schrieb: %s" % (k.autor, k.text)
for k in m.comments_set.all()]
answer = HttpResponse("\n".join(lines))
answer["Content-Type"] = "text-plain"
return answer
Code: Alles auswählen
from django.db import models
# Create your models here.
class Messages(models.Model):
title = models.CharField(maxlength=100)
timestamp = models.DateTimeField()
text = models.TextField("messagetext")
# dient der Ausgabe)entweder unicode oder string (str)
def __str__(self):
return self.title
return self.timestamp
return self.text
class Comments(models.Model):
news = models.ForeignKey(Messages)
autor = models.CharField(maxlength=70)
text = models.TextField("Text")
# dient der Darstellung(Ausgabe)
def __unicode__(self):
return self.text
Code: Alles auswählen
<h1> alle News</h1>
{% for n in Messages.objects.all %}
<div class="kontainer">
<div class="titelzeile">
<div class="title">{{ n.title|escape }}</div>
<div class="timestamp">{{ n.timestamp }}</div>
<div style="clear: both"></div>
</div>
<div class="text">
{{ n.meldung|escape|linebreaksbr }}
<div class="link_unten">
<a href="{{ n.id }}/"Details</a>
</div>
</div>
</div>
{% endfor %}
Danke