pythondjangoviewrender-to-response

Django show render_to_response in template


Hello and thank you in advance.

I know this is total noob question, and I have searched in the various forum and read and re-read the documentation, so please be gentle.

I have a view:

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

I am trying to get it to render to a template .html page:

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

Where playernumber is field in the model class "Player" 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'),
)

Thank you for your help!

dp


Solution

  • Well, it looks like your template is rendering fine. So you'll have to see if draft_list actually contained anything and what playernumber is for each object that was grabbed.

    In the root directory of your project, run:

    python manage.py shell
    

    Now that you're in the shell, to test whether there are actually any Player objects in your database and see what the playernumber property of each object returns:

    from acme.acmetest.models import Player
    draft_list = Player.objects.all()
    for draft in draft_list:
        print draft.playernumber