Django:如何简化从子目录渲染模板的调用

时间:2016-08-04 14:54:47

标签: django templates django-templates

我有几个应用程序的django项目。为了能够在其中一个中使用具有通用名称的模板(例如indexmenu,...,page1page2),我采用了这种模式: / p>

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

在视图中我使用它:

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

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

它有效,但我必须在每个渲染中编写完整的应用名称(app1/app2/)(没有应用使用其他应用中的模板或只使用模板/(除了项目本身))和应用程序名称实际上长达10-17个字符(不短app1app2

问题:有没有办法做得更好,每个应用程序呈现不会默认为templates/,而是默认为templates/app1/templates/app2/等等,分别?

感谢所有建议

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是,您可以在应用程序或settings.py中声明路径,并在整个脚本中使用该变量,例如:

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)

这也可以减少打字工作。