在django项目中放置模板的最佳位置是什么?
放置在
特定于应用程序的模板中,以帮助使应用程序在其他地方重用.
对于我将它们放入的一般"全局"模板
从Django书中,第4章:
如果您无法想到放置模板的明显位置,我们建议您在Django项目中创建一个模板目录(例如,在第2章中创建的mysite目录中,如果您一直关注我们的示例).
这正是我的工作,对我来说非常有用.
我的目录结构如下所示:
/media
我所有的CSS/JS /图像等
/templates
我
/projectname
的主项目代码模板(即Python代码)
跟随多米尼克和dlrust,
我们使用setuptools源代码分发(sdist)来打包我们的django项目和应用程序,以便在我们的不同环境中进行部署.
我们发现模板和静态文件需要位于django应用程序目录下,以便它们可以通过setuptools打包.
例如,我们的模板和静态路径如下所示:
PROJECT/APP/templates/APP/template.html PROJECT/APP/static/APP/my.js
为此,需要修改MANIFEST.in(请参阅http://docs.python.org/distutils/sourcedist.html#the-manifest-in-template)
MANIFEST.in的一个例子:
include setup.py recursive-include PROJECT *.txt *.html *.js recursive-include PROJECT *.css *.js *.png *.gif *.bmp *.ico *.jpg *.jpeg
此外,您需要在django设置文件中确认app_directories加载程序位于TEMPLATE_LOADERS中.我认为它在django 1.4中默认存在.
django设置模板加载器的示例:
# List of callables that know how to import templates from various sources. TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', )
万一你想知道为什么我们使用sdists而不是仅仅处理rsync文件; 它是我们配置管理工作流程的一部分,我们将单个构建tarball与PIP一起部署到测试,验收和生产环境中.
DJANGO 1.11
添加manage.py所在的模板文件夹,这是您的基本目录.在settings.py中更改模板的DIRS,如下所示
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },
]
现在使用代码使用模板,
def home(request): return render(request,"index.html",{})
在views.py中.这对于django 1.11来说完全没问题