python - 通过id获取对象时出现ValueError

标签 python django django-views django-urls

我正在尝试在我的 django 应用程序中通过 id 获取数据。问题是我不知道用户会点击哪种id。我在 View 中输入以下代码。

观看次数

def cribdetail(request, meekme_id):
    post=Meekme.objects.get(id=meekme_id)
    return render_to_response('postdetail.html',{'post':post, 'Meekme':Meekme},context_instance=RequestContext(request))

网址配置

url(r'^cribme/(?P<meekme_id>)\d+/$', 'meebapp.views.cribdetail', name='cribdetail'),

在模板中:

<a href="{% url cribdetail post.id %}">{{ result.object.title }}</a> 

当我单击模板中的上述链接时,出现以下错误:

ValueError at /cribme/0/

invalid literal for int() with base 10: ''

Request Method:     GET
Request URL:    http://127.0.0.1:8000/cribme/0/
Django Version:     1.4
Exception Type:     ValueError
Exception Value:    

invalid literal for int() with base 10: ''

Exception Location:     C:\Python27\lib\site-packages\django\db\models\fields\__init__.py in get_prep_value, line 537
Python Executable:  C:\Python27\python.exe
Python Version:     2.7.3

我已经为此奋斗了一段时间了。我怎样才能消除这个错误?

最佳答案

在我看来,你的 urlconf 是罪魁祸首,它应该是:

url(r'^cribme/(?P<meekme_id>\d+)/$', 'meebapp.views.cribdetail', name='cribdetail'),

不是:

url(r'^cribme/(?P<meekme_id>)\d+/$', 'meebapp.views.cribdetail', name='cribdetail'),

?P<meekme_id>意思是“给括号之间的匹配字符串指定这个名称。 () 不匹配任何内容,这就是为什么您的应用在尝试查找 id '' 的项目时会出错。

当括号括起 \d+ 时,您匹配一个自然数,这应该有效。

关于python - 通过id获取对象时出现ValueError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11264655/

相关文章:

python - 如何使用 R 或 python 读取和转换 GrADS 平面二进制格式?

python - Pandas 为列创建自定义 groupby 聚合

get_absolute_url() 中的 Django reverse() 不起作用

python - 模型对象没有属性保存

python "Class has no attribute"

python - 导入 pymorphy2 时出现异常

python - Django 查询对象的最新版本

python - Django rest framework 反向关系字段数据从 validated_data 中省略

python - Django - 按用户创建私有(private)页面

python - 求解 3 个变量的隐式二次系统