W poście Framework Django – pierwsze kroki przedstawiłem w jaki sposób utworzyć projekt w Django, jak dodać prosty widok, jak skonfigurować podstawowy routing oraz jak przygotować bazę danych. W poniższym poście skupię się przede wszystkim na rozbudowie widoków, za pomocą których użytkownik będzie mieć możliwość interakcji z budowaną aplikacją.
Przygotowanie szablonu oraz pliku ze stylami
Dla czytelności pisanego kodu oraz ułatwienia zarządzania nim w przyszłości warto szablony widoków (kod HTML) oraz pliki statyczne wykorzystywane w szablonie (arkusze stylów CSS, skrypty JavaScript) umieszczać poza kodem w Pythonie. W przykładzie wykorzystany zostanie prosty widoku zapisany w pliku css.html
:
<html> <head> {% load static %} <link rel="stylesheet" type="text/css" href="{% static 'app/style.css' %}" /> </head> <p>template with css</p> </html>
W szablonie wykorzystane zostało wyrażenie {% load static %}
pozwalające załadować pliki statyczne z katalogu zdefiniowanego w ustawieniach aplikacji tj. w pliku settings.py
:
STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ]
Plik CSS style.css
, do którego odwołujemy się w szablonie, ma postać:
body { background-color: black; color: white; }
Wykorzystanie szablonu w przykładowym widoku
W kodzie serwera w Pythonie wykorzystanie szablonu sprowadza się do użycia get_template()
:
from django.shortcuts import render from django.http import HttpResponse from django.template import loader def css(request): template = loader.get_template('app/css.html') context = { } return HttpResponse(template.render(context, request))
Wdrożenie aplikacji z szablonami i plikami statycznymi
Umieszczając aplikację na serwerze produkcyjnym trzeba przygotować pliki statyczne za pomocą polecenia:
python3 manage.py collectstatic
które pliki statyczne umieści w katalogu zdefiniowanym w pliku settings.py
:
STATIC_ROOT = os.path.join(BASE_DIR, 'collectstatic')