Adresy URL składają się z katalogów i nazw plików. Wszystko, co poprzedza /
jest uważany za katalog. Wszystko po ostatnim /
to nazwa pliku. Twój problem polega na tym, że używasz względnych adresów URL. Kiedy mówisz
static/pics/gamma.png
Twoja przeglądarka wysyła żądanie o ten plik w odniesieniu do katalogu bieżącej strony. W przypadku adresów URL, takich jak /
i /shop
, katalog to /
. Przeglądarka zażąda /static/pics/gamma.png
.
W przypadku adresów URL, takich jak /shop/item/1
, katalog to /shop/item/
. Twoja przeglądarka zażąda /shop/item/static/pics/gamma.png
.
Ponieważ Twoje adresy URL pasują do poprzedniego, powinieneś je przechowywać jako bezwzględne adresy URL (z początkowym /
), aby przeglądarka wykonała prawidłowe żądanie.
W części powiązanej, powinieneś używać url_for
kiedykolwiek możliwe.
url_for('static', filename='css/home.css')