2017-07-02 101 views
1

需要创建中间件,该中间件将所有请求和执行时间存储在Django中。 我在DBTypeError:int()参数必须是字符串,类似字节的对象或数字,而不是'WSGIRequest'

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' 

对不起FO愚蠢的问题,没有找到豪解决this.Thanks提前

+0

应该有一个init方法和一个调用方法(自动执行每个请求)请再次阅读文档https://docs.djangoproject.com/en/1.11/topics/http/middleware/ –

回答

1

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

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

相关问题