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'解决办法