【Django tutorial 5】

来源:互联网 发布:js iPhone 日历 编辑:程序博客网 时间:2024/06/05 18:01

15. 创建个简单的表单

按照如下内容更新polls/detail.html 

<h1>{{ poll.question }}</h1>{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}<form action="/polls/{{ poll.id }}/vote/" method="post">{% csrf_token %}{% for choice in poll.choice_set.all %}    <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />    <label for="choice{{ forloop.counter }}">{{ choice.choice }}</label><br />{% endfor %}<input type="submit" value="Vote" /></form>

根据这个需要对view中的detail做个小的调整

from django.template import RequestContext# ...def detail(request, poll_id):    p = get_object_or_404(Poll, pk=poll_id)    return render_to_response('polls/detail.html', {'poll': p},                               context_instance=RequestContext(request))
from django.shortcuts import get_object_or_404, render_to_responsefrom django.http import HttpResponseRedirect, HttpResponsefrom django.core.urlresolvers import reversefrom django.template import RequestContextfrom polls.models import Choice, Poll# ...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 results(request, poll_id):    p = get_object_or_404(Poll, pk=poll_id)    return render_to_response('polls/results.html', {'poll': p})
同时,创建一个results.html

<h1>{{ poll.question }}</h1><ul>{% for choice in poll.choice_set.all %}    <li>{{ choice.choice }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}</li>{% endfor %}</ul><a href="/polls/{{ poll.id }}/">Vote again?</a>
尝试一下访问 http://127.0.0.1/polls/ 吧





原创粉丝点击