Django教程:模板和视图

时间:2012-11-25 20:00:22

标签: django django-templates django-views

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

第2部分告诉我“将模板admin / base_site.html从Django本身的源代码(django / contrib / admin / templates)中的默认Django管理模板目录中复制到你所用目录的admin子目录中在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文件。但是当我在我的网络浏览器中加载这个文件(使用localhost服务器)时,我只看到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>

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

files

2 个答案:

答案 0 :(得分:2)

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

正如教程所描述的那样,您需要让Django通过其常规URL机制提供模板并进行渲染。在该部分的前面部分,您前往localhost:8000/admin/查看管理网站 - 由于您已替换了模板,因此未发生变化。回到那个地址,你会看到你的更新 - 和渲染 - 模板。

答案 1 :(得分:0)

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

要采取的步骤是:

- 在你的urls.py

中取消注释django管理站点

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

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

相关问题