TypeError:int()参数必须是字符串,类字节对象或数字,而不是' WSGIRequest'

时间:2017-07-02 18:29:02

标签: django django-middleware

需要创建在Django中存储所有请求和执行时间的中间件。 我在db

中创建了一个列

models.py

class RequestInformation(models.Model):
   list_of_requests = models.CharField(max_length=200)

还查看了django文档并创建了middleware.py

from profileapp.models import RequestInformation

class CustomRequestMiddleware(object):
   def process_request(self, request):
      http_information = RequestInformation(request)
      http_information.save()

还在设置中添加了自定义中间件。但不知道接下来该做什么。

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

抱歉愚蠢的问题,没有找到解决这个问题。谢谢提前

1 个答案:

答案 0 :(得分:1)

模型实例的第一个位置参数是pk,它是一个int。通常使用关键字参数来指定字段:RequestInformation(list_of_requests=request)

然而,这仍然不会做任何有用的事情,因为它只会保存请求对象的字符串表示。如果您希望从该对象中获得任何有用的信息,则需要单独访问其属性,然后再分配给模型中的单独字段。