django-template: HTML链接标签包含基础页面的整个HTML内容

0 投票
1 回答
1191 浏览
提问于 2025-04-17 08:35

index.html

<html>
    <head>
        <link href="static/style.css" rel="stylesheet" type="text/css" />
        <title>I want to</title>
    </head>
    <body>
        {% block header %}
        <div id="header-wrap"></div>
        {% endblock %}
        <div id="container">
            {% block error %} {% endblock %}
            {% block content %}{% endblock %}
        </div>
    </body>
</html>

page.html

{% extends 'index.html' %}

{% if error %}
    {% block error %}
        {{ error }}
    {% endblock %}
{% endif %}
{% block content %}
    <p><b>Page</b>: {{ page.language }}</p> 
    <p>views: {{ page.page_views}}</p>
    <form action='/suggest' method='post'>
        <textarea name='suggest' rows='10' cols='100'></textarea>
        <input type='hidden' name='page_name' value={{ page.language }}>
        <input type='submit' value='suggest'>
    </form>
    {% for suggestion in suggestions %}
        <p>Suggestion: {{ suggestion.text }}</p>
        <p>Votes: {{ suggestion.votes }}</p>
    {% endfor %}
{% endblock %}

views.py 返回的内容

return render_to_response('page.html', {'page': page, 'suggestions': suggestions})

问题:
- 当我查看首页(index.html)时,头部看起来放得很合适(一切都很好)
- 但是当我查看某个具体页面时,头部没有出现。我用火狐的开发者工具检查了一下,发现link标签里面包含了整个index.html的内容

<head>
<link type="text/css" rel="stylesheet" href="static/style.css">
<html>
<head>
<link href="static/style.css" rel="stylesheet" type="text/css" />
<title>I want to learn</title>
</head>
<body>
<div id="header-wrap"></div>
<div id="container">
<a href=/page/python>python</a>
<a href=/page/page1>page1</a>
<a href=/page/page1>page2</a>
<a href=/page/page3>page3</a>
</div>
</body>
</html>
</link>

我该如何解决这个问题?

1 个回答

1

刚刚解决了这个问题 :
- 页面上的样式表路径是相对路径(static/style.css),而不是 绝对路径(*/*static/style.css)。使用绝对路径就能让它正常工作

<head>
<link type="text/css" rel="stylesheet" href="/static/style.css">
<html>

撰写回答