gpt4 book ai didi

python - Django 全局 base.html 模板

转载 作者:太空狗 更新时间:2023-10-29 22:15:25 25 4
gpt4 key购买 nike

我是 Django 的新手。我正在使用 Django 1.8.6 和 Python 2.7。我正在尝试使用一个 base.html 模板,该模板可以在整个站点中全局使用,每个应用程序都可以在其中访问它。这是我的测试站点的当前结构:

twms

polls

migrations

static

templates

项目

migrations

static

templates

project

index.html

tmws

static

templates

tmws

base.html

这里是project/templates/project/index.html的代码

{% extends 'tmws/base.html' %}
{% block content %}
<h1>Projects</h1>
<ul>
{% for project in project_list %}
<li><a href="{% url 'project:detail' project.id %}">{{ project.name }}</a></li>
{% endfor %}

</ul>
end of list
{% endblock %}

这是我收到的错误:

TemplateDoesNotExist at /project/

tmws/base.html

如何从我的任何应用访问 tmws/tmws/templates/tmws/base.html?

如有任何帮助,我们将不胜感激!

如果需要任何其他信息,请告诉我。

编辑

这是我在 settings.py 中的模板设置:

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'), # If i leave both or just comment one one out I still get the same error
'tmws.tmws.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',
],
},
},
]

最佳答案

我认为您的模板目录配置可能有问题。在您项目的 settings.py 中,尝试检查您是否有与此类似的配置:

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, 'your template dir name')]
,
'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',
],
},
},
]

'your template dir name' 应该是 tmws。每当您尝试在 HTML 中扩展模板时,这将使 django 搜索此目录。您可以根据需要添加任意数量的目录。

我认为现在 Django 必须在以下位置搜索模板:

twms/project/templates/project

所以如果您将 base.html 文件放在那里,Django 将能够找到它。

另一个建议是创建一个通用模板目录并将您的 base.html 放在那里,因为您希望它在整个站点中使用。这只是我对订购模板的喜好,但无论哪种方式都应该有效。

编辑:

在 settings.py 中添加以下内容解决了问题。阅读评论以获取更多信息:

MASTER_BASE_DIR = os.path.dirname(__file__)




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

关于python - Django 全局 base.html 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com