Django - ValueError: invalid literal for int() with base 10: ''
我正在从Djangoproject学习Django https://docs.djangoproject.com/en/1.5/intro/tutorial04/。
-目前我在本教程的第4部分。
但是,从数据库表
1 2 3 4 | def detail(request, poll_id): poll = get_object_or_404(Poll, pk=poll_id) context = {'poll' : poll} return render(request,'polls/detail.html', context) |
显示错误:
1 | ValueError at /polls/2/ |
号
基为10的int()的文本无效:""
请帮助解决这个问题………因为我完全是这个框架的新手。我使用MySQL作为DBMS。这就是我的urls.py的样子:
1 2 3 4 5 6 7 8 9 10 | from django.conf.urls import patterns, url from polls import views urlpatterns = patterns('', url(r'^$', views.index, name='index'), url(r'^(?P)\d+/$', views.detail, name='detail'), url(r'^(?P)\d+/results/$', views.results, name='results'), url(r'^(?P)\d+/vote/$', views.vote, name='vote') ) |
提前谢谢
根据文档更改URL模式以捕获pk元素。django url可以捕获命名组,因此
1 2 3 4 5 6 | urlpatterns = patterns('', url(r'^$', views.IndexView.as_view(), name='index'), url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'), url(r'^(?P<pk>\d+)/results/$', views.ResultsView.as_view(), name='results'), url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'), ) |
您需要检查模板中的URL。您需要将整型ID传递给url
1 | Ex. url:- /polls/{{user.id}}/ |
。
希望这对其他人有用。
我也犯了这个错误。
我的情况是,我的表单模板中有一个拼写错误。仔细检查投票详细信息模板("polls/detail.html")中是否有拼写错误。
只需更换
1 | poll = get_object_or_404(Poll, pk=poll_id) |
号
具有
1 | poll = get_object_or_404(Poll, pk=int(poll_id)) |