【发布时间】:2012-07-08 09:37:50
【问题描述】:
我正在从官方 django 教程中学习 django。当我从表单中投票时,我收到了这个错误。这可能是由于views.py下的投票功能引起的
这是我的views.py/投票功能:
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):
return render_to_response('polls/detail.html', {'poll':p,
'error_message' : "didint select anything ",}, context_instance= RequestContext(request))
else:
selected_choice.votes += 1
selected_choice.save()
return HttpResponseRedirect(reverse('polls.views.results', args=(p.id,)))
这是错误消息屏幕:
**ValueError at /polls/2/vote/
以 10 为底的 int() 的无效文字:'on'**
请求方法:POST 请求网址:127.0.0.1:8000/polls/2/vote/
Django 版本:1.4 异常类型:ValueError 异常值: 基数为 10 的 int() 的无效文字:“on”异常 位置:/usr/local/lib/python2.7/dist-packages/django/db/models/fields/init.py 在 get_prep_value 中,第 537 行
这是我的投票/urls.py:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('polls.views',
url(r'^$', 'index'),
url(r'^(?P<poll_id>\d+)/$','detail'),
url(r'^(?P<poll_id>\d+)/results/$','results'),
url(r'^(?P<poll_id>\d+)/vote/$','vote'),
)
这里是 project/urls.py :
from django.conf.urls import patterns, include, url
urlpatterns = patterns('polls.views',
url(r'^$', 'index'),
url(r'^(?P<poll_id>\d+)/$','detail'),
url(r'^(?P<poll_id>\d+)/results/$','results'),
url(r'^(?P<poll_id>\d+)/vote/$','vote'),
)
【问题讨论】:
-
请贴出错误信息的全文。
-
我解决了这个问题。我忘记了 detail.html 中包含我的 post 方法的单引号。
-
您是如何准确解决这个问题的?我从第 4 部分复制并粘贴了整个教程,但仍然出现此错误?
-
没关系,我终于想通了。我的 urls.py 使投票返回 1/vote/ 而不仅仅是“1”。当然,如果数字应该是整数,那是行不通的。
标签: python django-views