为什么Django会向我展示模板的路径,但是不要将模板加载到页面中?

时间:2017-07-20 12:51:25

标签: python django templates

在我的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 /静态/ 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 %}

应用/ 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))

输出

enter image description here

我犯的错误是什么?如何正确加载此模板?

1 个答案:

答案 0 :(得分:1)

警告 ,此答案假定您提出问题的目的是让事情发挥作用,而不是帮助您解决可能的权限问题,以便你可能遇到另一个问题。也就是说,我假设您的最终目标不是非HTML文档中的html文档。

您可以做些什么来使您的输出工作:

看起来您想要将模板包含到另一个模板中,您可以使用{%extends&#34; basePage.html&#34; %}。然后,您的模板需要位于找到模板的位置,而不是找到静态页面的位置。

E.g。如果您的应用被称为“myapp&#39;然后在myapp / templates /下是一个可能的地方,假设TEMPLATES设置有APPDIRS = True

这意味着将index.html更改为

{% extends "basePage.html" %}
{% block menu %}<nav><a href="/heatingControll">App A</a></nav>{% endblock %}
{% block section %} Lorem Ipsum{% endblock %}

请参阅https://tutorial.djangogirls.org/en/template_extending/以及https://docs.djangoproject.com/en/1.11/topics/templates/#configuration,以便配置您的basePage.html