Ahoj, re 3: `runserver` neni urcen k hostovani ruznych obsahu na ruznych domenach. Neresi, z jaky domeny na nej pristupujes, proto `/file.jpg` hleda mezi tvejma urls.py.
Mas dve moznosti: 1. Bud se smir s tim, ze devel bezi vsechno na jedny domene. Rikas, ze bys to chtel kvuli rychlosti. Muzu te uklidnit, ze servirovani statiku pres runserver je samo o sobe neefektivni, takze te nejaky cookies nevytrhnou. A neres to. 2. Res to, ale pak musis poradne. Rozjed si lokalni webserver (nginx?), tam si nastav, ktere domeny maji jit na tvuj runserver (nebo jeste radsi uwsgi/gunicorn) a ktere se maji vracet primo ze static adresare. Je to dobry cviceni na zkoumani, co vsechno obnasi produkce. Na vyvoj je to vetsinou kanon na vrabce. A. On Sun, Feb 25, 2018 at 5:45 PM PavelZet <[email protected]> wrote: > Ve výchozím nastavení djanga jsou statické soubory projektu v relatvní > složce static > > settings.py: > STATIC_URL = '/static/' > > na vývojovém stroji jsou pak statické soubory přístupné na url: > http://localhost:8000/static/file.jpg > > Rád bych ale statické soubory zpřístupnil na doméně 3. řádu, tedy na url: > http://static.localhost:8000/file.jpg > Důvodem je třeba rychlejší přístup k souborům (neposílá se cookie) atd. > > > Nastavím tedy v settings.py: > STATIC_URL = 'http://static.localhost:8000/' > STATIC_ROOT = os.path.join(BASE_DIR, "static") > > poté zkontroluji dostupnost statického souboru > > manage.py findstatic --verbosity 2 file.jpg > No matching file found for 'file.jpg'. > > Looking in the following locations: > C:\Program Files\Python36\lib\site-packages\django\contrib\admin\static > Soubor tedy vůbec nebyl nalezen. Předpokládám, že STATIC_ROOT se používá > jen pro získávání statických souborů aplikací a proto nebyl soubor nalezen. > Nebo je to jinak? > > > Nastavím tedy settings.py jinak: > STATIC_URL = 'http://static.localhost:8000/' > STATICFILES_DIRS = [ > os.path.join(BASE_DIR, "static"), > ] > > poté zkontroluji dostupnost statického souboru > > manage.py findstatic --verbosity 2 file.jpg > Found 'file.jpg' here: > D:\Document\Development\Python\Testproject\static\file.jpg > Looking in the following locations: > D:\Document\Development\Python\Testproject\static > C:\Program Files\Python36\lib\site-packages\django\contrib\admin\static > Soubor je nalezen :) > > Nyní se pokusím k souboru přistoupit v prohlížeči přes url: > http://static.localhost:8000/file.jpg > ale obdržím 404, v konzoli je: > Not Found: /file.jpg > [25/Feb/2018 17:37:30] "GET /file.jpg HTTP/1.1" 404 1975 > > > Otázka 1: > Proč je po nastavení STATIC_URL a STATIC_ROOT z url nedostupný obsah > složky STATIC_ROOT ? > > Otázka 2: > Je správnější nastavit STATIC_ROOT nebo STATICFILES_DIRS? Oboje nastavit > shodně nelze. > > Otázka 3: > Co musím udělat, abych se přes URL domény 3. řádu dostal ke statickému > souboru? Co dělám špatně? > > > Díky moc za reakce. > > -- > -- > E-mailová skupina [email protected] > Správa: http://groups.google.cz/group/django-cs > --- > Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny > „django-cs“ ve Skupinách Google. > Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, > zašlete e-mail na adresu [email protected]. > Chcete-li tuto diskusi zobrazit na webu, navštivte > https://groups.google.com/d/msgid/django-cs/c490316b-4b62-4e04-8bb6-2a14a59777f6%40googlegroups.com > <https://groups.google.com/d/msgid/django-cs/c490316b-4b62-4e04-8bb6-2a14a59777f6%40googlegroups.com?utm_medium=email&utm_source=footer> > . > Další možnosti najdete na https://groups.google.com/d/optout. > -- -- E-mailová skupina [email protected] Správa: http://groups.google.cz/group/django-cs --- Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs ve Skupinách Google. Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu [email protected]. Chcete-li zobrazit tuto diskusi na webu, navštivte https://groups.google.com/d/msgid/django-cs/CA%2BvQZ8qhoHdLtzp3A%3DKsYbFjEHazq2MtXpQ%2BxAT%3D%3DZTeNaJNXw%40mail.gmail.com. Další možnosti najdete na adrese https://groups.google.com/d/optout.
