获取对象id时,int()的无效字面值:
我想获取一个具体的对象(“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 请求。