Django 扩展模板

0 投票
3 回答
2815 浏览
提问于 2025-04-15 14:16

我有一个简单的Django/Python应用,里面有一个页面叫create.html。我想把这个页面扩展一下,使用index.html。现在一切都正常(没有错误),当页面加载时,create.html里的所有数据和index.html里的所有文字都能显示出来,但格式却不对——index.html里应该加载的图片和样式表(CSS)都没有加载出来。当我在浏览器中直接打开index.html时,一切看起来都很好。有人能帮我解决这个问题吗?

谢谢!

下面是模板的代码:

create.html

    {% extends "index.html" %}

{% block title %}Projects{% endblock %}

{% block content %}
    {% if projects %}
        <table  border="1">
            <tr>
                <td align="center">Name</td>
                <td align="center">Description</td>
                <td align="center">Priority</td>
                <td align="center">X</td>
            </tr>
            {% for p in projects %}
            <tr>
                <td> <a href="/tasks/{{p.id}}/">{{p.Name}}</a> </td>
                <td>{{p.Description}} </td>
                <td> {{p.Priority.Name}} </td>
                <td> <a href="/editproject/{{p.id}}/">Edit</a> <a href="/deleteproject/{{p.id}}/">Delete</a> </td>
            <tr>
            {% endfor %}
        </table>
    {% else %}
        <p>No active projects.</p>
    {% endif %}
{% endblock %}

还有index.html:

    <html>
    <head>
        {% block title %}{% endblock %}

        <link rel="stylesheet" href="style.css" type="text/css" media="screen" />
    </head>
    <body>
    {% block content %}{% endblock %}

<div class="PostContent">

<img class="article" src="images/spectacles.gif" alt="an image" style="float: left" />
<h1>Heading 1</h1>
<h2>Heading 2</h2>
<h3>Heading 3</h3>
<h4>Heading 4</h4>
<h5>Heading 5</h5>
<h6>Heading 6</h6>
<p>Lorem ipsum dolor sit amet,
<a href="#" title="link">link</a>, <a class="visited" href="#" title="visited link">visited link</a>, 
 <a class="hover" href="#" title="hovered link">hovered link</a> consectetuer 
adipiscing elit. Quisque sed felis. Aliquam sit amet felis. Mauris semper, 
velit semper laoreet dictum, quam diam dictum urna, nec placerat elit nisl 
in quam. Etiam augue pede, molestie eget, rhoncus at, convallis ut, eros.</p>

    ....
    </body>
    </html>  

3 个回答

1

更具体地说,看看你内容文件中的第一行,也就是 content.html:

  {% extends "base.html" %}

把这一行改成

  {% extends "index.html" %}

(或者把 index.html 重命名为 base.html)

1

啊哈,找到了问题所在!

原来是没有设置 MEDIA_ROOT 和 MEDIA_URL :-( 编辑完这两个设置后,一切就正常了。

Django 模板看不到 CSS 文件

1

看起来你是在扩展 base.html 而不是 index.html。

撰写回答