2016-08-04 14 views
0

Ich habe Django-Projekt mit ein paar Anwendungen. Um der Lage sein, die Verwendung Vorlagen mit gemeinsamen Namen (wie index, menu, ..., page1, page2) in mehr als einer von ihnen, dass ich dieses Schema angenommen:Django: Wie vereinfacht man Aufrufe für das Rendern von Vorlagen aus dem Unterverzeichnis

app1/ 
    templates/ 
     app1/ 
      page1.html 
      page2.html 
app2/ 
    templates/ 
     app2/ 
      page1.html 
      page2.html 

und in Ansichten verwende ich es wie folgt aus:

def myview(request): # in app1 
    context={'name':'John', 'surname':'Lennon'} 
    return render(request,"app1/page1.html",context) 

oder

def myview(request): # in app2 
    context={'tool':'hammer', 'size':'big'} 
    return render(request,"app2/page1.html",context) 

es funktioniert, aber ich habe den vollen App-Namen schreiben (app1/,() in jedem Render (und keine App verwendet Vorlagen aus anderen App oder nur aus Vorlagen/(mit Ausnahme des Projekts selbst)) und die Apps-Namen sind eigentlich lang wie 10-17 Zeichen (nicht kurz wie app1, app2)

Die Frage: ist es eine Möglichkeit, es besser zu machen, dass jeder Anwendungen machen würde standardmäßig nicht zu templates/ sondern templates/app1/, templates/app2/ und so jeweils?

Danke für alle Anregungen

Antwort

0

Eine einfache Lösung ist, können Sie den Pfad auf der App oder in settings.py erklären können und diese Variable in gesamter Skript verwenden, zum Beispiel:

path1 = "app1/templates/" 
path2 = "app2/templates/" 

def myview(request): # in app1 
    context={'name':'John', 'surname':'Lennon'} 
    return render(request,path1+"page1.html",context) 

def myview(request): # in app2 
    context={'tool':'hammer', 'size':'big'} 
    return render(request,path2+"page1.html",context) 

Dies kann auch die Tipparbeit reduzieren.