0

我正在完成官方的 Django 教程,我被困在第 3 部分。由于第 2 部分的最后部分也使用了模板,我将描述我所做的:

第 2 部分告诉我“将模板 admin/base_site.html 从 Django 本身的源代码 (django/contrib/admin/templates) 的默认 Django 管理模板目录中复制到您正在使用的任何目录的管理子目录中TEMPLATE_DIRS。”

所以我创建了一个新目录“admin”,它具有以下相对路径(请注意,Django 使用目录名称“mysite”,我使用“django_test”:/django_test/polls/templates/admin。我复制了 base_site.html 文件进入这个目录。

当我在本地浏览器中呈现文件时,它说:{% extends "admin/base.html" %} {% load i18n %} {% block title %}{{ title }} | {% trans 'Django site admin' %}{% endblock %} {% block branding %}{% trans 'Django administration' %}{% endblock %} {% block nav-global %}{% endblock %}

第 3 部分让我在新的子目录 polls/index.html 中创建一个 index.html 文件。但是当我在我的网络浏览器(使用本地主机服务器)中加载这个文件时,我只看到了 html 代码而不是项目符号列表(见下文)。

请注意,我还在我的 settings.py 文件中编辑了 TEMPLATE_DIRS 以告诉 Django 它可以在 /Users/myname/Sites/django_test/django_test/templates 下找到 index.html

下面我将粘贴我的本地服务器呈现的代码(而不是我想要的项目符号列表)。你知道为什么要呈现这段代码,而不是项目符号列表吗?

<html>
<head><title>Test</title></head>

<body>
{% if latest_poll_list %}
    <ul>
    {% for poll in latest_poll_list %}
        <li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

</body>
</html>

我不知道我在组织文件方面是否犯了错误。可能有人知道我做错了什么?

文件

4

2 回答 2

2

正如您在评论中所说,您将文件路径放入浏览器中。然后,您自然会看到模板的文本,因为您完全绕过 Django 并让浏览器从磁盘加载未渲染的模板。

正如本教程所述,您需要让 Django 通过其正常的 URL 机制提供模板并呈现它。在该部分的前面部分,您localhost:8000/admin/访问了管理站点 - 这并没有因为您替换了模板而改变。返回该地址,您将看到更新和渲染的模板。

于 2012-11-25T20:46:32.420 回答
0

一旦你掌握了它的窍门,django 管理站点就很容易了。

采取的步骤是:

-在你的 urls.py 中取消注释 django 管理站点

- 通过将 admin 文件夹(在 django 包内)复制到 settings.py 中 STATIC_ROOT 中指定的文件夹中或在 PYTHONPATH 上提供目录,使 css 可用于管理站点

换句话说,您不需要为管理站点创建模板。但是,您需要创建模板来访问您在项目中创建的视图

于 2012-11-25T20:13:27.253 回答