The addchoice screen (addchoice.html) code follows below. I included
it just in case something might be wrong with it that could be related
to or causing this problem, because some of its code is also doing
some new things that I've not done before, so there are likely errors
in it as well. Here's the code:


<h1>Add Poll Choice Screen</h1>

<form action="/polls/addchoice/" method="POST">{% csrf_token %}

{% if ccount and pquestion %}
<p><strong>There are currently {{ ccount }} choices for the Poll
Question {{ pquestion }}?</strong></p>
{% endif %}

{% if message %}<p><strong>{{ message }}</strong></p>{% endif %}

<br /><br />
<label>POLL QUESTIONS:</label>
    <select name="polls" id="polls" type="select-one">
        {% for poll in polls %}
            {{ poll.question }}
        {% endfor %}
    </select>
<br /><br />
<input type="submit" value="addchoice" />
<br /><br />
{% if newchoice %}
<p>NEW CHOICE ADDED WAS={{ newchoice }}</p>
{% endif %}

</form>


Thanks for the help.


On Jan 5, 11:41 am, hank23 <hversem...@stchas.edu> wrote:
> OK here's the entire views.py code:
>
> # Create your views here.
>
> from django.http import Http404
> from django.shortcuts import render_to_response, get_object_or_404,
> get_list_or_404
> from django.http import HttpResponseRedirect, HttpResponse
> from django.core.urlresolvers import reverse
> from django.template import RequestContext
> from polls.models import Choice, Poll
> from django.core.context_processors import csrf
> from django.views.decorators.csrf import csrf_protect
> import datetime
> from django import forms
> from polls.forms import AddChoiceForm
>
> def index(request):
>     #1 - return HttpResponse("Hello, World. You are at the poll
> index.")
>     #2 - latest_poll_list = Poll.objects.all().order_by('-pub_date')[:
> 5]
>     #2 - output = ', '.join([p.question for p in latest_poll_list])
>     #2 - return HttpResponse(output)
>     #3 - latest_poll_list = Poll.objects.all().order_by('-pub_date')[:
> 5]
>     #3 - t = loader.get_template('polls/index.html')
>     #3 - c = Context({
>     #3 -     'latest_poll_list': latest_poll_list,
>     #3 - })
>     #3 - return HttpResponse(t.render(c))
>     latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
>     return render_to_response('polls/index.html', {'latest_poll_list':
> latest_poll_list})
>
> def detail(request, poll_id):
>     #1 - return HttpResponse("You're looking at poll %s." % poll_id)
>     #2 - try:
>     #2 -     p = Poll.objects.get(pk=poll_id)
>     #2 - except Poll.DoesNotExist:
>     #2 -     raise Http404
>     #2 - return render_to_response('polls/detail.html', {'poll': p})
>     p = get_object_or_404(Poll, pk=poll_id)
>     return render_to_response('polls/detail.html', {'poll': p},
> context_instance=RequestContext(request))
>
> def results(request, poll_id):
>     p = get_object_or_404(Poll, pk=poll_id)
>     return render_to_response('polls/results.html', {'poll':p})
>
> def vote(request, poll_id):
>     p = get_object_or_404(Poll, pk=poll_id)
>     try:
>         selected_choice = p.choice_set.get(pk=request.POST['choice'])
>     except (KeyError, Choice.DoesNotExist):
>         # redisplay the poll voting form.
>         return render_to_response('polls/detail.html', {
>             'poll':p,
>             'error_message': "You didn't select a choice.",
>         }, context_instance=RequestContext(request))
>     else:
>         selected_choice.votes += 1
>         selected_choice.save()
>         # Always return an HttpResponseRedirect after successfully
> dealing
>         # with POST data. This prevents data from being posted twice
> if a
>         # user hits the back button.
>         return HttpResponseRedirect(reverse('polls.views.results',
> args=(p.id,)))
>
> def pollvotecount(request, poll_id):
>     p = get_object_or_404(Poll, pk=poll_id)
>     choices = get_list_or_404(Choice, poll=poll_id)
>     dctnry = {'poll': p}
>     totalvotes = 0
>     choiceList = []
>     for choice in choices:
>         choiceList.append(choice)
>         totalvotes += choice.votes
>
>     dctnry['clist'] = choiceList
>     dctnry['total'] = totalvotes
>     return render_to_response('polls/pollvotecount.html', dctnry)
>
> def choicecount(request, poll_id):
>     p = get_object_or_404(Poll, pk=poll_id)
>     return render_to_response('polls/choicecount.html', {'poll':
> p})
>
> def summary(request):
>     p = get_list_or_404(Poll)
>     dctnry = {'poll': p}
>     pollcount = Poll.objects.all().count()
>     dctnry['pcount'] = pollcount
>     return render_to_response('polls/summary.html', dctnry)
>
> def addpoll(request):
>     dctnry = {}
>     pollcount = 0
>
>     def countpolls():
>         pollcount = Poll.objects.all().count()
>         dctnry['pcount'] = pollcount
>
>     try:
>         newquestion = ""
>
>         if request.method == 'POST':
>             newquestion = request.POST['question']
>     except():
>         countpolls()
>         dctnry['message'] = "No new poll data added"
>
>         return render_to_response('polls/addpoll.html', dctnry,
>
> context_instance=RequestContext(request))
>     else:
>         if newquestion != "":
>             newpoll = Poll(question=newquestion,
> pub_date=datetime.date.today())
>             newpoll.save()
>
>         countpolls()
>         dctnry['newquestion'] = newquestion
>         dctnry['message'] = "New poll question was added"
>         return render_to_response('polls/addpoll.html', dctnry,
>
> context_instance=RequestContext(request))
>
> def addchoice(request):
>     polls = get_list_or_404(Poll)
>     data = {'polls': polls}
>     choiceform = AddChoiceForm(data)
>     return render_to_response('polls/addchoice.html', {
>                               'choiceform': choiceform,
>     })
>
> At this point I just want to display the addchoice screen, so that's
> why I've coded the addchoice view the way it is. I'm not seeing
> anything obvious so far that's referencing a form that's not being
> imported, since this is the first form that I've coded, imported and
> referenced. Still looking. Thanks for the help.
>
> On Jan 5, 11:20 am, Dan Fairs <dan.fa...@gmail.com> wrote:
>
>
>
> > Hi,
>
> > > Near the top of my views.py I do have "from django import forms", so
> > > I'm guessing that based on previous comments that this is ok. Do I
> > > also need to import my specific named-form which IO created for the
> > > new screen/view from my polls.forms.py module? If so is this syntax
> > > correct:
>
> > > from polls.forms import AddChoiceForm
>
> > > If not let me know. Thanks.
>
> > From your original code - yes, you'll need that line you specify above.
>
> > However, the original error you posted was referring to something called 
> > 'form' which wasn't defined. Check through your code in views.py for any 
> > reference to 'form'. You'll also need to check any code you've written 
> > that's imported by your views.py for references to a 'form' that hasn't 
> > been defined - that will also cause views.py to fail to import.
>
> > Cheers,
> > Dan
> > --
> > Dan Fairs | dan.fa...@gmail.com |www.fezconsulting.com- Hide quoted text -
>
> - Show quoted text -

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to