Наследование шаблонов Django не доставляет CSS? - PullRequest
2 голосов
/ 02 ноября 2011

В моем проекте django есть некоторые загадочные (по крайней мере для меня, как новичок) выводы, которые я не понимаю, работая в моей среде разработки.Я хотел иметь базовый шаблон, который включает в себя таблицу стилей в папке статических носителей ... это работает до сих пор ... но только для адреса http://localhost/ все остальные URL-адреса имеют шаблон, который наследуется от базового шаблона.

Теперь таблица стилей http://localhost/ выглядит хорошо ... если я перейду к http://localhost/hello/, включенная таблица стилей имеет целую HTML-структуру DOM с телом, типом документа и т. Д. Почему это так??Он каким-то образом анализирует 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 %} 

Ответы [ 3 ]

3 голосов
/ 02 ноября 2011

Возможно, потому что у вас есть относительная ссылка на файл CSS.

Попробуйте изменить:

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

до

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

так что всегда ищите в корне для media / style.css

2 голосов
/ 02 ноября 2011

Теперь вы установили ссылку на css как относительную "media/style.css".В домашних условиях он разрешается до "/media/style.css", но в привет он разрешается до "/hello/media/style.css" (что дает привет страница).

Просто используйте абсолютную ссылку CSS, как это: "/media/style.css".

1 голос
/ 21 июля 2015

Правильный способ включить таблицы стилей будет

<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}style.css">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...