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')