Adresy URL se skládají z adresářů a názvů souborů. Cokoli, co předchází /
je považován za adresář. Cokoli za koncovým /
je název souboru. Váš problém je, že používáte relativní adresy URL. Když říkáte
static/pics/gamma.png
váš prohlížeč zadá požadavek na tento soubor vzhledem k adresáři aktuální stránky. V případě adres URL jako /
a /shop
, adresář je /
. Prohlížeč si vyžádá /static/pics/gamma.png
.
V případě adres URL jako /shop/item/1
, adresář je /shop/item/
. Váš prohlížeč si poté vyžádá /shop/item/static/pics/gamma.png
.
Protože vaše adresy URL odpovídají prvnímu, měli byste je uložit jako absolutní adresy URL (s počátečním /
), aby prohlížeč provedl správný požadavek.
Na druhou stranu byste měli používat url_for
kdykoli je to možné.
url_for('static', filename='css/home.css')