【发布时间】:2017-07-20 12:51:25
【问题描述】:
在我的 DjangoServer 的静态文件夹中,有一个默认网页的模板。它用一些模板块装饰。
如果我加载这个模板文件,模板的路径会显示在浏览器中,看起来代码没有加载。
如果我将模板存储在 app/template 文件夹中并扩展此文件。它工作得很好。我使用 Django 的教程,但它仍然无法正常工作。
Settings.py
django.contrib.staticfiles 被添加到 INSTALLED_APPS
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
projectRootFolder/static/html/basePage.html
{% load static from staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
{% block head %}
<title>{% block title %}My amazing site{% endblock %}</title>
{% endblock %}
</head>
<body>
{% block body %}
<header>
{% block header %}
<header> -- HEADER BANNER --</header>
{% block menu %}<nav></nav>{% endblock %}
{% endblock %}
</header>
<section>
{% block section %} SECTION {% endblock %}
</section>
{% block footer %}
<footer> -- FOOTER --</footer>
{% endblock %}
{% endblock %}
</body>
<script type="text/javascript" src="{% static 'angularjs/SOME_ANGULAR_FILES_LOADED.js' %}"></script>
</html>
来自应用的app/template/app/index.html
{% load static from staticfiles %}
{% static "html/basePage.html" %}
{% block menu %}<nav><a href="/heatingControll">App A</a></nav>{% endblock %}
{% block section %} Lorem Ipsum{% endblock %}
app/views.py
from django.template import loader
from django.shortcuts import render
from django.http import HttpResponse
# PAGE CALLS
def index(request):
template = loader.get_template('mainControll/index.html')
context = {}
return HttpResponse(template.render(context, request))
输出
我犯了什么错误?如何正确加载此模板?
【问题讨论】:
-
展示你的观点。我怀疑你实际上并没有渲染这个模板,而是静态地提供它;如果你正在渲染它,你会得到一个错误,因为
extends必须是模板中的第一行。 -
@DanielRoseman 谢谢你,我已经更新了这部分问题
-
您仍然没有显示您的视图。从您对Lynoure 回答的评论来看,为什么您的静态目录中有基本模板?模板不是静态文件。
-
@DanielRoseman 现在将
app/views.py的内容添加到问题中。我在那里找到了basePage.html模板,因为在我看来,它被定义了一次,不应该改变。你有什么意见? -
这不是意见的问题。模板必须放在模板目录中,否则它们不起作用。把你的模板放在正确的地方,然后使用
extend,一切都会好起来的。