Django教程:模板和视图

Django教程:模板和视图,django,django-templates,django-views,Django,Django Templates,Django Views,我正在完成Django的官方教程,我被困在第3部分。由于在第2部分的最后一部分中也使用了模板,因此我将描述我所做的工作: 第2部分告诉我“将模板admin/base_site.html从Django自身源代码(Django/contrib/admin/templates)中默认的Django admin模板目录复制到模板目录中使用的任何目录的admin子目录中。” 因此,我创建了一个新目录“admin”,该目录具有以下相对路径(请注意,在Django使用目录名“mysite”的地方,我使用“Dj

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

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

因此,我创建了一个新目录“admin”,该目录具有以下相对路径(请注意,在Django使用目录名“mysite”的地方,我使用“Django_test”):/Django_test/polls/templates/admin。我将base_site.html文件复制到此目录中

当我在本地浏览器中呈现文件时,它会显示:
{%extends“admin/base.html”%}{%load i18n%}{%block title%}{{title}}{124;{%trans'Django site admin%}{%endblock%}{%block branding%}{%trans Django管理“}{%endblock%}{%block nav global%}{%endblock%}

第3部分要求我在新的子目录polls/index.html中创建一个index.html文件。但是当我在web浏览器(使用localhost server)中加载该文件时,我只看到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>

试验
{%if最新轮询列表%}
    {最新轮询列表%中的轮询百分比}
  • {%endfor%}
{%else%} 没有投票

{%endif%}
我不知道我在整理文件时是否犯了错误。有人知道我做错了什么吗


一旦掌握了诀窍,django管理网站就很容易了

应采取的步骤包括:

-取消对URL.py中django管理站点的注释

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


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

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


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

要查看此内容,您在浏览器中输入的确切地址是什么?如果包含views.py代码和url.py代码,可能会很有用。我在浏览器中输入以下地址:file://localhost/Users/myname/Sites/django_test/django_test/templates/polls/index.htmlMy views.py代码为:而my urls.py代码为谢谢。这很有帮助。但是现在我仍然得到一个错误:TemplateSyntaxError at/polls/无法解析剩余部分:'poll.id/“>poll.id'来自'poll.id/”>poll.id'你知道为什么会发生这种情况吗?当我在浏览器中添加以下内容时,我得到了TemplateSyntaxError:没错,当我添加/admin/时,我得到了admin视图。我想这就是我应该得到的。谢谢。你上面发布的模板不会给出错误。我怀疑你没有发布你的实际代码已使用-例如,请注意问题中的版本在
a
标记内有
poll.question
,但您的错误消息在那里显示
poll.id
。如果使用“模板”,请剪切并粘贴模板的确切内容。Mmm你指的是view.py代码,那么这是我仅有的代码:。如果你指的是index.html文件中的html代码,那么它是测试{%If latest_poll_list%}
    {%for poll in latest_poll_list%}
  • {%endfor%}
{%else%}没有可用的轮询。

{%endif%}很抱歉,请告诉我是否应该重新格式化。但正如我之前所说,如果我打开,我现在只会收到错误消息。否则,如果我在8000和polls(即80000/admin/polls/)之间写入“admin”,页面将呈现。我不确定这是否是本教程要向我展示的内容。