2017-07-02 7 views
1

Djangoにすべてのリクエストと実行時間を格納するミドルウェアを作成する必要があります。 私はデシベルTypeError: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() 

設定でも追加のカスタムミドルウェア作成しました。しかし、次に何をすべきかわからない。愚かな質問FO申し訳

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

、モデルインスタンスへの最初の位置引数がintであるPK、ある事前

+0

initメソッドと呼び出しメソッドが必要です(リクエストごとに自動的に実行されます)。もう一度docsを読んでください。https://docs.djangoproject.com/en/1.11/topics/http/middleware/ –

答えて

1

でthis.Thanksを解決するために、HO見つけることができませんでした。通常は、キーワード引数を使用してフィールドを指定します(RequestInformation(list_of_requests=request))。

しかし、これは依然として要求オブジェクトの文字列表現を保存するだけで何も役に立たないでしょう。そのオブジェクトから何か有益なものを取得したい場合は、その属性に個別にアクセスしてから、モデル内のフィールドを区切る必要があります。

関連する問題