微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django 2.1:模板结构

如何解决Django 2.1:模板结构

我在使用 Django 路由查找位于应用程序级别的模板时遇到问题。也就是说,除非我将它们放在根项目级目录中,否则不会呈现应用程序级目录中的模板。但对我来说,这种架构的问题在于,如果我有两个或更多应用程序都有一个名为 home.html文件,我如何从项目级别的模板文件夹中解决该问题,以免它们发生冲突.

错误信息

Template-loader postmortem
Django tried loading these templates,in this order:

Using engine django:

django.template.loaders.filesystem.Loader: C:\Users\HP\Desktop\DEV\PYTHON\DEVELOPMENT\WILLIAM-vincent-PROJECT\django-begin\templates\index.html (Source does not exist)

我希望 Django 搜索 /templates/posts/templates/pages 文件夹以获取文件。而是尝试直接从 templates 文件夹中获取文件。如果我将 HTML 文件直接放入 /templates/ 文件夹,则会发生冲突,因为应用程序具有相似的文件

项目目录结构

|__my-project
|__manage.py
|__pages
|__posts
|__templates
   |__pages
   |  |__home.html
   |  |__about.html
   |__posts
      |__home.html
      |__about.html

我希望每个应用都有自己的 home.htmlabout.html

INSTALLED_APPS = [
    'posts.apps.PostsConfig','pages.apps.PagesConfig','django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',]
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',],},]

解决方法

您的模板需要通过以下方式保存:

ProjectName/AppName/Templates/AppName/Template.html

因此,如果您的项目名为 DjangoProject,而您的应用程序名为 DjangoApp,则为:DjangoProject/DjangoApp/Templates/DjangoApp/Template.html

这对于您在项目中启动的任何应用都是一样的。

编辑:

目前您的项目目录中有一个 templates 文件夹。这是错误的。

应用目录中的每个应用都需要一个 templates 文件夹。

所以my-project/pages/templates/pagesmy-project/posts/templates/posts

不是my-project/templates/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。