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 Link to heading
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 Link to heading
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 Link to heading
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')