2016-12-08 6 views
0

Ich habe eine Funktion, die ich in all meinen Ansichten aufrufen müssen, die die Ansicht als Argument:Wie referenziert man innerhalb einer Funktion?

def view_1(request): 

    def foo(): 
     return Model.objects.create(user = request.user, view = 'view_1') 

    return render(request, myAPP/view_1.html) 


def view_2(request): 

    def foo(): 
     return Model.objects.create(user = request.user, view = 'view_2') 

    return render(request, myAPP/view_2.html) 

    . 
    . 
    . 

def view_N(request): 

    def foo(): 
     return Model.objects.create(user = request.user, view = 'view_N') 

    return render(request, myAPP/view_N.html) 

Gibt es eine Möglichkeit, die Ansicht Variable dynamisch zu erzeugen, so dass ich einmal die Funktion schreiben und nennen Sie es in jeder Ansicht?

def view_1(request) 
    foo() 
    return render(request, myAPP/view_1.html) 

def view_2(request) 
    foo() 
    return render(request, myAPP/view_2.html) 
    . 
    . 
    . 
def view_N(request) 
    foo() 
    return render(request, myAPP/view_N.html) 
+0

Haben Sie klassenbasierte Ansichten überprüft? – aisbaa

Antwort

0

Warum nicht passieren Sie nur die Funktion selbst als Argument von foo?

def foo(view_obj): 
     return Model.objects.create(user = request.user, view = view_obj.__name__) 

def view_1(request) 
    foo(view_1) 
    return render(request, myAPP/view_1.html) 
Verwandte Themen