获取对象id时,int()的无效字面值:

1 投票
2 回答
1082 浏览
提问于 2025-04-29 15:47

我想获取一个具体的对象(“Tweet”),因为我想用它的信息。下面是我做的方式:

模板:

{% for tweet in tweets %}
    {{tweet.text}} - {{tweet.date}}
    <form action="#" method="get">
        <input type="submit" class="" value="Favourite" name="favourite">
        <input type="hidden" name="idtweet" id="{{tweet.id}}">
    </form>
{% endfor %}

视图:

if request.GET.get('favourite'):
        tweet_id = request.GET['idtweet']
        tweet_object = Tweet.objects.get(id=tweet_id)

但是,我遇到了这个错误:invalid literal for int() with base 10: ''

暂无标签

2 个回答

0

根据Daniel的回答,Django内部发生的事情是:

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

我建议你使用:

  • request.GET.get('idtweet', 0),这样可以在ID不存在时返回一个默认的坏ID(这里是0)
  • get_object_or_404,这个方法可以帮助你更干净地过滤数据

或者使用一个Django表单来简单地验证表单数据。

1

你没有给 idtweet 输入框设置一个值:你把这个值放到了 id 属性里,而不是放到值属性里,这样做有点奇怪。

不过要注意,收藏这个操作因为会修改数据,所以应该用 POST 请求,而不是 GET 请求。

撰写回答