2012-11-29 11 views
21

Od Django 1.5 r https://docs.djangoproject.com/en/1.5/releases/1.5/#miscellaneousodpowiedni sposób obsłużyć przestarzałej `adminmedia` templatetag i {%}% admin_media_prefix

znaczniki szablonu adminmedia biblioteka, która tylko zawierał przestarzałe szablon {% admin_media_prefix%} zostało usunięte. Próba wczytania go z {% load adminmedia%} zakończy się niepowodzeniem. Jeśli twoje szablony nadal zawierają tę linię, musisz ją usunąć.

Więc co jest właściwym sposobem zastąpić kod znaleźć w starszych bibliotek i moich dotychczasowych projektów, które nadal używa {% load adminmedia %} i ładuje CSS jak: -

<link rel="stylesheet" type="text/css" href="{% load adminmedia %}{% admin_media_prefix %}css/login.css"> 

?

Odpowiedz

22

Od wersji Django 1.3 można korzystać z aplikacji django.contrib.staticfiles.

Upewnij się, że plik django.contrib.staticfiles jest zawarty w pliku INSTALLED_APPS, a opcje STATIC_ROOT i STATIC_URL są określone w pliku settings.py.

Następnie uruchom polecenie manage.py collectstatic, a statyczne pliki wszystkich aplikacji zostaną zebrane w folderze STATIC_ROOT.

W szablonach można użyć zmiennej kontekstowej {{ STATIC_URL }} (upewnij się, że django.core.context_processors.static jest wliczone w TEMPLATE_CONTEXT_PROCESSORS) lub tag {% static %} szablonu.

<link href="{{ STATIC_URL }}admin/css/login.css" rel="stylesheet"> 

lub

{% load staticfiles %} 
<link href="{% static 'admin/css/login.css' %}" rel="stylesheet"> 
+0

szukam o docs dla STATIC_PATH i nic nie widzę, że powinno być STATIC_ROOT? –

+0

@wobbily_col Masz rację co do STATIC_ROOT, przesłałem zmianę dotyczącą tej odpowiedzi (w oczekiwaniu na ocenę). –

+0

Czy pobieranie tych plików do własnego projektu jest naprawdę zalecanym rozwiązaniem? To brzmi jak hack. – knipknap

4

po prostu skopiowane, co w base.css:

{% load admin_static %} 

a następnie

<link href="{% static 'admin/css/base.css' %}" rel="stylesheet"> 

(zastąpić base.css z tym, co trzeba, jak login.css w twoim przypadku)

Upewnij się, że masz django.contrib.staticfiles w swoim INSTALLED_APPS.

(nie trzeba skonfigurować i uruchomić manage.py collectstaticSTATIC_ROOT jak sugerowano wcześniej przez Anton)

Powiązane problemy