Django模板继承没有提供CSS?

时间:2011-11-01 22:47:37

标签: python django

在我的django项目中,在我的开发环境中工作时,有一些神秘的(至少对我来说是一个beinner)输出我不明白。 我希望有一个基本模板,其中包含一个静态媒体文件夹中的样式表...这到目前为止工作...但只是地址http://localhost/所有其他网址都有一个继承自基本模板的模板。

现在http://localhost/的样式表看起来不错......如果我转到http://localhost/hello/,所包含的样式表有一个完整的html DOM结构,包含body,doctype等等。为什么会这样?他以某种方式解析了一个html网站,而不是采用css文件......

这里是我的代码:任何想法?

urls.py:

from django.views.static import * 
from django.conf import settings
admin.autodiscover()

urlpatterns = patterns('',
    ('^$',home_view),
    ('^hello/$', hello),
    (r'^admin/', include(admin.site.urls)),
    ('^useragent/$',ua_display_good1),
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', 
)

views.py

from django.http import HttpResponse
from django.shortcuts import render_to_response

def hello(request):  
    pagetitle = "Hello World"
    return render_to_response('hello.tpl', {'pagetitle': pagetitle})

def home_view(request):
    pagetitle = "Something"
    return render_to_response('home.tpl', {'pagetitle': pagetitle})

def ua_display_good1(request):
    try:
        ua = request.META['REMOTE_ADDR']
    except KeyError:
        ua = 'unknown'
    return render_to_response('base.tpl',{'ageone': ua})

基本模板:

<!DOCTYPE html>
<html lang="de">
<meta name="description=" content="{{metadescription}}">
<head>
<link rel="stylesheet" type="text/css" href="media/style.css">

<title>{% block title %}{{pagetitle}}{% endblock %}</title>
</head>
<body>
<h1>{% block h1 %}{{ageone}}{% endblock %}</h1>
{% block content %}{% endblock %}
{% block footer %}{% include "footer.tpl" %}
{% endblock %}
</body>
</html>

你好模板:

{% extends "base.tpl" %}
{% block h1 %}Home{% endblock %}
{% block content %}Welcome{% endblock %} 

5 个答案:

答案 0 :(得分:3)

可能是因为你有一个CSS文件的相对引用。

尝试更改:

<link rel="stylesheet" type="text/css" href="media/style.css">

<link rel="stylesheet" type="text/css" href="/media/style.css">

所以它总是在media / style.css的根目录中查找

答案 1 :(得分:2)

现在您已将指向css的链接设置为相对"media/style.css"。在家中它解析为"/media/style.css"但是在hello它解析为"/hello/media/style.css"(它给出了hello页面)。

只需使用这样的绝对css链接:"/media/style.css"

答案 2 :(得分:1)

包含样式表的正确方法是

<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}style.css">

答案 3 :(得分:0)

如果这仍然行不通....我的css文件名为Stylesheet.css,我将其链接为css/Stylesheet.css ..它不起作用...然后我将其更改为css/Stylesheet.CSS ..并且有效

答案 4 :(得分:-1)

将href =“ media / style.css”更改为href =“ media / style.CSS”即可。