关于Django:Django – ValueError:基数为10的int()的无效文字:”

Django - ValueError: invalid literal for int() with base 10: ''

我正在从Djangoproject学习Django https://docs.djangoproject.com/en/1.5/intro/tutorial04/。

-目前我在本教程的第4部分。

但是,从数据库表Poll中提取记录时,它显示一个错误,如下所示:

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可以捕获命名组,因此poll_id

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 {{user.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))