我有几个应用程序的django项目。为了能够在其中一个中使用具有通用名称的模板(例如index
,menu
,...,page1
,page2
),我采用了这种模式: / 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个字符(不短app1
,app2
)
问题:有没有办法做得更好,每个应用程序呈现不会默认为templates/
,而是默认为templates/app1/
,templates/app2/
等等,分别?
感谢所有建议
答案 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)
这也可以减少打字工作。