2016-09-02 2 views
1

mit habe ich eine Funktion in einem django Projekt etwas wie folgt aus:Sendeauftrag Körper einen Dekorateur in Python

class my_class(): 

def post(self, request, id, format=None): 
    logger.info(
       ''.join(
        ["id"+str(request.get('id')), 
        "name"+str(request.get('name')), 
        "grade"+str(request.get('grade'))] 
       ) 
    ) 
    row = Student(
     id = request.get('id'), 
     name = request.get('name'), 
     grade = request.get('grade') 
    ) 
    row.save() 

Jetzt möchte ich einen Dekorateur haben (@logger) um meine diese Funktion, die alles protokolliert innen (logger.info). d. h. ich sollte @logger nur oberhalb der Funktionsdefinition hinzufügen und den gesamten Anfragetext protokollieren. Kann mir jemand helfen, wie kann ich das machen? Ich habe ein Problem beim Senden des Anfragekörpers von post an den Dekorateur.

Antwort

0

Ich denke, das sollte ausreichen, sollten Sie auch lesen this.

class Logger(object): 

    def __init__(self, f): 
     self.f = f 

    def __call__(self, request, *args, **kwargs): 
     logger.info(request.GET) 
     self.f(request, *args, **kwargs) 
+0

'logger.info (request.GET)' ergibt dies: '>' –

1
def logger(func): 
    def decorator(request, *args, **kwargs): 
     # log here 
     return func(request, *args, **kwargs) 
    return decorator 
+0

wie kann ich den Wunsch Körper einloggen Hier?? –

+0

den Fehler bekommen: ''Student' Objekt hat kein Attribut '__getitem __'' –

+0

das gleiche wie Sie es zuvor getan haben, haben Sie die gleiche Anfrage wie in Sicht – Abdulafaja

Verwandte Themen