Django zeigen render_to_response in Vorlage
Hallo und danke im Voraus.
Ich weiß, das ist die totale noob Frage, und ich habe gesucht in den verschiedenen forum und Lesen und wieder Lesen Sie die Dokumentation, also bitte seien Sie sanft.
Ich habe einen Blick:
#views.py
from django.shortcuts import render_to_response
from django.shortcuts import render
from django.http import HttpResponse, HttpRequest, HttpResponseRedirect
from acme.acmetest.models import Player
from acme.acmetest.models import PickForm
def playerAdd(request, id=None):
form = PickForm(request.POST or None,
instance=id and Player.objects.get(id=id))
# Save new/edited pick
if request.method == 'POST' and form.is_valid():
form.save()
return HttpResponseRedirect('/draft/')
#return render_to_response('makepick.html', {'form':form})
return render(request, 'makepick.html', {'form':form})
def draftShow(request):
draft_list = ['1', 'hello', 'test', 'foo', 'bar']
#draft_list = Player.objects.all()
#return render_to_response('makepick.html', {'draft_list' :draft_list}, context_instance=RequestContext(request))
return render_to_response('makepick.html', {'draft_list' :draft_list})
Ich versuche es zu machen, um eine Vorlage .html-Seite:
#makepick.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML lang="en">
<head>
<title>Pick</title>
</head>
<body>
<form method="POST" action="">
{% csrf_token %}
<table>{{ form }}</table>
<input type="submit" value="Draft Player"
</form><br /><br />
Your picks so far:<br />
{% for draft in draft_list %}
{{ draft.playernumber }}
{% endfor %}
</body>
</HTML>
Wo playernumber ist das Feld in der model-Klasse "Spieler" in models.py.
#urls.py
from django.conf.urls.defaults import patterns, include, url
from acme.acmetest import views
urlpatterns = patterns('',
('^$', 'acme.acmetest.views.playerAdd'),
)
Danke für Eure Hilfe!
dp
- Was ist dein problem?
- Ich bekomme die HTML-Seite, und andere django-code rendert korrekt, aber alles, was ich in dem Bereich kenne ich mich, es zu schreiben, ist "deine picks so far:" dann nichts. Ich würde es lieben, um eine Liste von Spielern aus der draft-Liste/Modell.
- Ich kann nicht erkennen Fehler in Ihrem code ATM; versuchen Sie, um zu Debuggen, z.B. über einfache print-Anweisungen (z.B.
print draft_list
vor geht es um die Vorlage).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, es sieht aus wie Ihre Vorlage-rendering in Ordnung. So haben Sie, um zu sehen, wenn
draft_list
tatsächlich enthalten, und alles, wasplayernumber
ist für jedes Objekt, das heruntergeladen wurde.In das root-Verzeichnis des Projekts, Ausführung:
Du bist jetzt in der shell, um zu testen, ob es auch
Player
Objekte in Ihre Datenbank und sehen, was dieplayernumber
- Eigenschaft für jedes Objekt gibt:code
für Entwurf in draft_list: >>> für den Entwurf im draft_list: ... print Entwurf.playernumber ... 23 21 24 174 1234 999code
return render_to_response('makepick.html', {'draft_list' :draft_list}, context_instance=RequestContext(request))
.def draftShow(request): draft_list = ['1', 'hello', 'test', 'foo', 'bar'] return render_to_response('makepick.html', {'draft_list' :draft_list})
ich Frage mich, ob es ein problem mit den anderen anzeigen den ich bin Fütterung in der gleichen html-Vorlage. Ich habe ein Formular mit einemreturn HttpResponseRedirect('/draft/')
zur Antwort zurück. Beachten Sie, dass/draft/
tatsächlich ruft die gleiche Seite, wie wir ab, aber es ist erwähnenswert,...render_to_response
? Alles, was ich wirklich tun wollen ist, zeigen die Einträge in der db aktualisiert wird jedes mal die Tabelle aktualisiert wird. Oder ist das problem auf der HTML-Seitefor loop
?HttpResponse
, aber nicht, dass die Vorlage verwenden. Wenn Sie wollen schließlich zeigen eine erhebliche HTML-Seite, Sie sollte wahrscheinlich verlassen Sie sich auf die Wiedergabe einer Vorlage. Können Sie zeigen Sie Ihreurls.py
- Datei? Und was ist die URL, die Sie verwenden, um auf die Seite zuzugreifen?from django.conf.urls.defaults import patterns, include, url from acme.acmetest import views urlpatterns = patterns('', ('^$', 'acme.acmetest.views.playerAdd'), )
Hier ist es, wo es genannt wird, in der Projekt-urls...from django.conf.urls.defaults import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', ('^$', include('acme.acmetest.urls')), url(r'^admin/doc/', include('django.contrib.admindocs.urls')), url(r'^admin/', include(admin.site.urls)), )
draftShow
Ansicht, das gerade abgeglichen wird, um einen beliebigen URL in der appurl.py
, aber es sein sollte, wenn Sie es wollen, zugänglich sein. Hast du vergessen es hier? Wenn nicht, wie wurden Sie auf die Seite zugreifen, bevor?('^$', 'acme.acmetest.views.playerAdd'),
, aber mitacme.acmetest.views.draftShow
verglichen wird, um so etwas wie'^drafts/$'
. Siehe docs.djangoproject.com/en/dev/topics/http/urls.Stellen Sie sicher, dass
makepick.hmtl
ist in Ihre appstemplates
Verzeichnis oder in Ihrem TEMPLATE_DIR.Können Sie in Ihrer Ansicht, um sicherzustellen, dass
Player.objects.all()
ist tatsächlich wieder etwas. Stellen Sie sicher, playernumber ist eine tatsächliche Eigenschaft des Player-Objekts.