首页 > 解决方案 > 如何定义 django 模板文件夹?

问题描述

我想用这样的 html 模板构建我的项目:

├───app1
│   ├───...
│   └───...
├───app2
│   ├───...
│   └───...
├───project
│   ├───...
│   ├───templates
│   │   └───navbar.html
│   │   └───footer.html
│   │   └───sidebar.html
│   │   └───conbined.html
│   │   └───content_app1.html
│   │   └───content_app2.html

原因是我想将我的网站分成几个部分,如下所示。因此,在每个 app 文件夹中都没有 html 文件。navbar, footer and sidebar始终显示,而可以content_appN.html相应地激活。将conbined.html它们全部结合在一起。

在此处输入图像描述

我的尝试(在settings.py):

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, 'templates').replace('\\','/'),
)

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

app1: views.py:

def app1_content(request):
    return render(request, 'templates/combined.html')

实际上,我几乎尝试了我在网上找到的所有方法,但仍然不知道该怎么做。请不要因为这个想法而笑我建立这样的网站。谁能给我一些提示?

标签: django

解决方案


根据我的理解,您的问题陈述是您希望将您的模板目录保留在特定文件夹中,并且根据我的说法,您的 manage.py 文件与您的项目文件夹位于同一级别,因此我正在向您解释解决方案只要。因此,要定义 django 模板文件夹,您需要在 settings.py 中进行设置:-

TEMPLATES_DIR = os.path.join(BASE_DIR, 'project','templates')

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEMPLATES_DIR,],
        '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',
            ],
        },
    },
]

所以,这是解释我所做的是参考基目录设置 TEMPLATES_DIR 变量,该变量将路径到保存 django 项目的 manage.py 的文件夹的路径现在我正在连接项目和模板目录只是为了导航您为项目中的模板保留的文件夹结构。

我希望你觉得这很有帮助。如果您还有任何疑问,我也很乐意回答。

快乐编码。:-)


推荐阅读