【问题标题】:Django - int() argument must be a string, a bytes-like object or a number, not 'SimpleLazyObject'Django - int() 参数必须是字符串、类似字节的对象或数字,而不是“SimpleLazyObject”
【发布时间】:2019-12-18 17:53:03
【问题描述】:

将组件安装到运行 django 2.1 的项目后出现此错误:


int() argument must be a string, a bytes-like object or a number, not 'SimpleLazyObject'

查看

class TrackLikeToggle(RedirectView):
    def get_redirect_url(self, *args, **kwargs):
        id = self.kwargs.get("id")
        obj = get_object_or_404(Post, id=id)
        url_ = obj.get_absolute_url()
        user = self.request.user
        if user in obj.likes.all():
            obj.likes.remove(user)
        else:
            messages.add_message(self.request, messages.INFO, '1')
            obj.likes.add(user)
        return url_

完整回溯:https://pastebin.com/FmkFKDW3


非常感谢

【问题讨论】:

  • 回溯并没有多大帮助。当你得到错误?您可以在每一行之后打印并发送代码的运行距离,您可以使用调试器。

标签: django


【解决方案1】:

我认为这是因为

obj.likes.add(user)这行代码被命中时,用户没有通过某种方式认证,它返回Django的默认请求用户对象,它是SimpleLazyObject的一个实例。您可以将视图设为login_required,也可以尝试检查用户是否已通过身份验证。

更多详情可以关注Link

【讨论】:

    猜你喜欢
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多