Django - ValueError: int() 以 10 为基数的无效文字:''

Posted

技术标签:

【中文标题】Django - ValueError: int() 以 10 为基数的无效文字:\'\'【英文标题】:Django - ValueError: invalid literal for int() with base 10: ''Django - ValueError: int() 以 10 为基数的无效文字:'' 【发布时间】:2013-08-04 16:01:21 【问题描述】:

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

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

但是,在从数据库表 Poll 获取记录时显示错误:

def detail(request, poll_id):
    poll = get_object_or_404(Poll, pk=poll_id)
    context =  'poll' : poll
    return render(request,'polls/detail.html', context)

显示错误:

ValueError at /polls/2/

以 10 为基数的 int() 的无效文字:''

请帮助解决这个问题........因为我完全是这个框架的新手。 我使用 mysql 作为我的 DBMS。 这就是我的 urls.py 的样子:

从 django.conf.urls 导入模式,url 从民意调查导入意见 urlpatterns = 模式('', 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') )

提前致谢

【问题讨论】:

请添加您的 urls.py 尝试将poll_id 转换为int @am1ty9d9v:是的,我试过了....但没有运气 那么这意味着你没有得到poll_id。尝试在def 行之后添加print poll_id' 语句,以查看poll_id 得到了什么 @am1ty9d9v :我得到 poll_id = 20 代替 2 和 10 代替 1.... 【参考方案1】:

更改您的 url 模式以根据文档捕获 pk 元素。 Django urls 可以捕获命名组,因此poll_id

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'),
)

【讨论】:

:: 谢谢,但它显示错误 TypeError at /polls/20/detail() got an unexpected keyword argument 'pk'...当我替换 @ 987654323@ 命名组与pk【参考方案2】:

您需要检查模板中的 URL。 您需要将整数 id 传递给 URL user.id,因为 url 需要在模板中具有整数值。

Ex.  url:-  /polls/user.id/

希望这对其他人有用。

【讨论】:

【参考方案3】:

我也有这个错误。

我的情况是我的表单模板中有错字。仔细检查投票详情模板(“polls/detail.html”)是否有错别字。

【讨论】:

【参考方案4】:

简单替换

poll = get_object_or_404(Poll, pk=poll_id)

poll = get_object_or_404(Poll, pk=int(poll_id))

【讨论】:

以上是关于Django - ValueError: int() 以 10 为基数的无效文字:''的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 的详细视图中使用两个参数时,得到“ValueError:int() 的无效文字,基数为 10:'Trancel'”

Django ORM 迁移在 IntegerField 上给出“ValueError:int() 的无效文字”

django ValueError:以 10 为基数的 int() 的无效文字:''

Django celery 4 - ValueError: int() 的无效文字,当启动 celery worker 时,基数为 10

Django ValueError: invalid literal for int() with base 10: 'xxx'解决办法

django:ValueError - 无法序列化