20121023 django学习笔记4

本文详细介绍了如何在模板中创建表单,并通过Django框架实现了一个简单的投票系统,包括表单的创建、回调页面的设置以及投票过程的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在模板中创建表单

 1 <h1>{{ poll.question }}</h1>
 2 
 3 {% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
 4 
 5 <form action="/polls/{{ poll.id }}/vote/" method="post">
 6 {% csrf_token %}
 7 {% for choice in poll.choice_set.all %}
 8     <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
 9     <label for="choice{{ forloop.counter }}">{{ choice.choice }}</label><br />
10 {% endfor %}
11 <input type="submit" value="Vote" />
12 </form>

对应表单的回调页面

 1 from django.template import RequestContext
 2 from polls.models import Poll, Choice
 3 from django.http import HttpResponse, HttpResponseRedirect
 4 from django.shortcuts import render_to_response, get_object_or_404
 5 from django.core.urlresolvers import reverse
 6 
 7 def index(request):
 8     latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
 9     return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list})
10 
11 def detail(request, poll_id):
12     p = get_object_or_404(Poll, pk=poll_id)
13     return render_to_response('polls/detail.html', {'poll': p}, context_instance=RequestContext(request))
14 
15 def results(request, poll_id):
16     p = get_object_or_404(Poll, pk=poll_id)
17     return render_to_response('polls/results.html', {'poll': p})
18 
19 def vote(request, poll_id):
20     p = get_object_or_404(Poll, pk=poll_id)
21     try:
22         selected_choice = p.choice_set.get(pk=request.POST['choice'])
23     except (KeyError, Choice.DoesNotExist):
24         return render_to_response('polls/detail.html', {
25             'poll': p,
26             'error_message': "You didn't select a choice.",
27         }, context_instance=RequestContext(request))
28     else:
29         selected_choice.votes += 1
30         selected_choice.save()
31         return HttpResponseRedirect(reverse('polls.views.results', args=(p.id,)))

转载于:https://www.cnblogs.com/zhu327/archive/2012/10/23/2735675.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值