Pisanie pierwszej aplikacji Django, część 6.

Ten tutorial zaczyna się, gdzie skończył się Tutorial 5. Zbudowaliśmy testowaną aplikację web-ankietową, teraz dodamy arkusz stylów i grafikę.

Oprócz od HTML-u wygenerowanego przez serwer, aplikacje webowe zazwyczaj muszą serwować dodatkowe pliki – takie jak grafiki, JavaScript lub CSS – niezbędne do wyrenderowania pełnej strony internetowej. W Django nazywamy te pliki „plikami statycznymi”.

W małych projektach to nieduży problem, bo możesz po prostu trzymać pliki statyczne gdzieś, gdzie może odnaleźć je web serwer. Jednak w dużych projektach – szczególnie tych złożonych z wielu aplikacji – raczenie sobie z wieloma zbiorami plików statycznych każdej aplikacji zaczyna być wyzwaniem.

Do tego mamy django.contrib.staticfiles: zbiera ono pliki statyczne z każdej z twoich aplikacji (i każdego innego miejsca, które wskażesz) w jedną lokację, która może być prosto zaserwowana na produkcji.

Dostosuj wygląd i pracę z twoją aplikacją

Najpierw stwórz katalog o nazwie static w swoim katalogu polls. Django będzie tam szukało plików statycznych, w podobny sposób jak szuka szablonów w polls/templates/.

Ustawienie Django STATICFILES_FINDERS zawiera listę finderów, które wiedzą jak odnajdywać pliki statyczne w różnych źródłach. Jednym z domyślnych jest AppDirectoriesFinder, który szuka „statycznego” podkatalogu w każdej z INSTALLED_APPS, takiego jak ten, który właśnie stworzyliśmy w polls. Panel administracyjny używa takiej samej struktury katalogów dla swoich statycznych plików.

W katalogu static, który właśnie stworzyłeś, stwórz inny katalog o nazwie polls i w nim stwórz plik o nazwie style.css. Innymi słowy twój arkusz stylów powinien być w polls/static/polls/style.css. Z powodu jak działa finder plików statycznych AppDirectoriesFinder, możesz odwoływać się do tego pliku statycznego w Django po prostu jako do polls/style.css, podobnie jak wskazujesz ścieżkę do szablonów.

Przestrzeń nazw plików statycznych

Tak samo jak z szablonami, moglibyśmy poradzić sobie umieszczając nasze pliki statyczne bezpośrednio w polls/static (zamiast tworzyć kolejny podkatalog polls), ale w rzeczywistości byłoby to złym pomysłem. Django wybierze pierwszy statyczny plik, którego nazwa się zgadza i jeśli miałbyś plik statyczny o takiej samej nazwie w innej aplikacji, Django nie byłoby w stanie ich odróżnić. Musimy być w stanie wskazać Django odpowiedni plik i najprostszym sposobem, aby to zapewnić jest znamespace’owanie ich. To znaczy umieszczenie tych plików statycznych w innym katalogu nazwanym dla samej aplikacji.

Umieść następujący kod w tym arkuszu stylów (polls/static/polls/style.css):

polls/static/polls/style.css
li a {
    color: green;
}

Następnie dodaj poniższe na początku polls/templates/polls/index.html:

polls/templates/polls/index.html
{% load static %}

<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />

Szablonowy tag {% static %} generuje bezwzględny URL plików statycznych.

To wszystko, co musisz zrobić dla dewelopmentu. Przeładuj http://localhost:8000/polls/ a powinieneś zobaczyć, że linki pytań są zielone (styl Django!), co znaczy, że twój arkusz stylów został właściwie załadowany.

Dodawanie obrazu tła

Następnie stworzymy podkatalog na grafiki. Stwórz podkatalog images w katalogu polls/static/polls/. W tym katalogu umieść grafikę o nazwie background.gif. Innymi słowy umieść swój obrazek w polls/static/polls/images/background.gif.

Potem dodaj do swojego arkusza stylów (polls/static/polls/style.css):

polls/static/polls/style.css
body {
    background: white url("images/background.gif") no-repeat right bottom;
}

Odśwież http://localhost:8000/polls/ a powinieneś zobaczyć tło załadowane w prawym dolnym rogu ekranu.

Ostrzeżenie

Oczywiście szablonowy tag {% static %} nie jest dostępny do użycia w plikach statycznych takich jak twój arkusz stylów, które nie są wygenerowane przez Django. Powinieneś zawsze używać ścieżek względnych do łączenia plików statycznych pomiędzy nimi, ponieważ wtedy możesz zmienić STATIC_URL (używany przez szablonowy tag static do wygenerowania jego URL-i) bez bycia zmuszonym do modyfikacji też rzeszy ścieżek w twoich plikach statycznych.

To są podstawy. Po więcej szczegółów na temat ustawień i innych kawałków zawartych we frameworku, zobacz howto plików statycznych i dokumentację staticfiles. Demployment plików statycznych porusza kwestię, jak używać plików statycznych na prawdziwym serwerze.

Kiedy już czujesz się dobrze z plikami statycznymi, przeczytaj część 7 tego tutoriala, aby dowiedzieć się, jak dostosowywać wygenerowany automatycznie panel administracyjny Django.

Back to Top