Django show render_to_response в шаблоне - PullRequest
5 голосов
/ 09 февраля 2012

Привет и заранее спасибо.

Я знаю, что это полный вопрос, и я искал на различных форумах, прочитал и перечитал документацию, поэтому, пожалуйста, будьте осторожны.

У меня есть вид:

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

Я пытаюсь отобразить его на странице шаблона .html:

#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>

Где playernumber - это поле в классе модели "Player" в models.py.

#urls.py

from django.conf.urls.defaults import patterns, include, url
from acme.acmetest import views


urlpatterns = patterns('',
    ('^$', 'acme.acmetest.views.playerAdd'),
)

Спасибо за вашу помощь!

дп

Ответы [ 2 ]

6 голосов
/ 09 февраля 2012

Ну, похоже, ваш шаблон хорошо рендерится. Таким образом, вам нужно будет увидеть, действительно ли draft_list содержит что-нибудь и что такое playernumber для каждого захваченного объекта.

В корневом каталоге вашего проекта запустите:

python manage.py shell

Теперь, когда вы находитесь в оболочке, проверьте, есть ли на самом деле какие-либо Player объекты в вашей базе данных и посмотрите, что возвращает свойство playernumber каждого объекта:

from acme.acmetest.models import Player
draft_list = Player.objects.all()
for draft in draft_list:
    print draft.playernumber
1 голос
/ 09 февраля 2012

Убедитесь, что makepick.hmtl находится в каталоге templates вашего приложения или в вашем TEMPLATE_DIR.

Вы можете проверить в своем представлении, чтобы убедиться, что Player.objects.all() действительно что-то возвращает. Убедитесь, что playernumber является фактическим свойством объекта Player.

...