Django a CSS

50 views
Skip to first unread message

Robert Jonathan Šimon

unread,
May 18, 2013, 4:46:46 PM5/18/13
to djan...@googlegroups.com
Ahoj,
jak se dá přidat CSS do django stránky? Když jsem dal cestu ve settings, kde mám static složku, tak mi tyhlety příkazy nefungují
{% load staticfiles %}
    <link rel="stylesheet" type="text/css" href="{% static "style.css" %}">

Jak to mám udělat zprávně?
Předem děkuji

Martin Tiršel

unread,
May 18, 2013, 5:16:13 PM5/18/13
to djan...@googlegroups.com
Ahoj,

Najlepsie ak si das do settings.py:

import os
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATICFILES_DIRS = (os.path.join(PROJECT_ROOT, 'project_static_files'), )
MEDIA_URL = '/media/'
STATIC_URL = '/static/'
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.media",
"django.core.context_processors.request",
)

Nasledne si vytvot v project roote (v rovnakom adresari ako mas appky)
adresare media, static a project_static_files.

* media - media subory uploadnute aplikaciou
* static - tu sa zbieraju staticke subory (napriklad grafika, ktora je
sucastou dizajnu stranky) z adresara static zo vsetkych aplikacii
* project_static_files - sem davam staticke subory, ktore sa pouzivaju na
celom webe, teda nie su specificke len pre urcitu aplikaciu

A takto nejako moze vyzerat zakladna sablona:

<!DOCTYPE html>
<html>
<head>
...
<link rel="stylesheet" href="{{ STATIC_URL }}css/reset.css"
type="text/css">
{% block additional_styles %}{% endblock additional_styles %}
...
</head>
<body>
{% block body %}{% endblock body %}
</body>
</html>

K statickym suborom sa nasledne dostanes cez {{ STATIC_URL }}, ktoru
naplnuje django.core.context_processors.static context processor a k media
suborom cez {{ MEDIA_URL }} (django.core.context_processors.media
processor).

Ak ti bezi django dev server, tak nemusis uz nic viacej riesit, django
server staticky obsah automaticky naserviruje, ale ak pouzijes nejaky
realny webserver, treba zavolat:

../manage.py collectstatic

To sposobi to, ze zo vsetkych aplikacii, ktore mas v INSTALLED_APPS
nakopiruje do static adresara obsah static adresara kazdej takejto
aplikacie. Webserver potom pre /static/ nasmerujes prave do tohto adresara
(aj media musis webserveru oznamit, kde ich najde).

Na prvy pohlad to asi vyzera zlozito, ale netreba sa toho bat, je to dobre
navrhnute a velmi flexibilne.

--
S pozdravom/Regards,
Martin Tiršel

Robert Jonathan Šimon

unread,
May 19, 2013, 8:58:28 AM5/19/13
to djan...@googlegroups.com
Ahoj, moc děkuji za odpověď, ale bohužel mi to nefunguje, složky mám udělané takhle:
mysite
   media
   mysite
   project_static_files
       css
          style.css
   static
   template
potom HTML kod mam kousek takhle:
<!DOCTYPE html>
<html lang='cs'>
  <head>
    <title>Škola na dosah</title>
    <meta charset='utf-8'>
    <meta name='description' content=''>
    <meta name='keywords' content=''>
    <meta name='author' content=''>
    <meta name='robots' content='all'>
    <!-- <meta http-equiv='X-UA-Compatible' content='IE=edge'> -->
{% load staticfiles %}
    <link href='/favicon.png' rel='shortcut icon' type='image/png'>
    <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/style.css">
  </head>
  <body>
<div class='hlmenupozadi'>
    </div>
    <div class='hlmenutext'>
a ještě jedan otázka, jdou nějak takhle hezky udělat Templaty, abych tam nemusel mít absolutní cestu jako tu?

Dne sobota, 18. května 2013 22:46:46 UTC+2 Robert Jonathan Šimon napsal(a):

Robert Jonathan Šimon

unread,
May 19, 2013, 10:46:12 AM5/19/13
to djan...@googlegroups.com
oprava samozřejmě složku css a style.css mám ve složce static

Dne neděle, 19. května 2013 14:58:28 UTC+2 Robert Jonathan Šimon napsal(a):

Jirka Vejrazka

unread,
May 19, 2013, 2:12:43 PM5/19/13
to djan...@googlegroups.com
Nejlepsi, co muzes udelat, je podivat se do logu tveho webserveru (at uz pouzivas Django development server nebo neco jineho). Tam zjistis, jakou cestu pozaduje tvuj browser. But z toho poznas sam, co je spatne, nebo sem hod ten radek z logu a nekdo ti poradi.

  Jirka


2013/5/19 Robert Jonathan Šimon <berti...@gmail.com>
--
--
E-mailová skupina djan...@googlegroups.com
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.
Pokud chcete zrušit odběr skupiny, aby vám z ní již nechodily e-maily, zašlete e-mail na adresu django-cs+...@googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/groups/opt_out.
 
 

Robert Jonathan Šimon

unread,
May 19, 2013, 3:26:05 PM5/19/13
to djan...@googlegroups.com
používám Django development server, kde mam log? v přikazovém řádku když ho poustím z něho? tam mi nic nepíše

Dne neděle, 19. května 2013 20:12:43 UTC+2 JirkaV napsal(a):

Robert Jonathan Šimon

unread,
May 20, 2013, 6:09:43 AM5/20/13
to djan...@googlegroups.com
první řádek bylo první připojení na tu stránku, další tři řádky bylo druhé připojení na stránku a další tři bylo třetí připojení na stránku


Dne sobota, 18. května 2013 22:46:46 UTC+2 Robert Jonathan Šimon napsal(a):
Ahoj,
log.png

Jirka Vejrazka

unread,
May 20, 2013, 6:46:48 AM5/20/13
to djan...@googlegroups.com
To na rychly prvni pohled vypada dobre, jenom tvuj development webserver nevraci staticke soubory prohlizeci. Mas splnene vsechny pozadavky pro staticfiles? Zejmena DEBUG=True (viz https://docs.djangoproject.com/en/1.5/howto/static-files/#configuring-static-files)

  Jirka


2013/5/20 Robert Jonathan Šimon <berti...@gmail.com>

--

Robert Jonathan Šimon

unread,
May 20, 2013, 6:50:04 AM5/20/13
to djan...@googlegroups.com
Debug=TRUE mam v settings.py

Dne pondělí, 20. května 2013 12:46:48 UTC+2 JirkaV napsal(a):

Robert Jonathan Šimon

unread,
May 20, 2013, 7:12:56 AM5/20/13
to djan...@googlegroups.com
jestli to někomu pomůže, tak zde je zdrojový kódy stránky


Dne sobota, 18. května 2013 22:46:46 UTC+2 Robert Jonathan Šimon napsal(a):
Ahoj,
mysite.zip

Radim Novotny

unread,
May 20, 2013, 9:56:07 AM5/20/13
to djan...@googlegroups.com
Máš tam dvě chyby. 

1) PROJECT_ROOT ti ukazuje do adresáře, kde je settings.py ale ty ho potřebuješ o adrsář výš, aby jsi za PROJECT_ROOT přidat /project_static_files, /media, /static, takže třeba:

PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

2) statické soubory máš ve STATIC_ROOT ale tam nepatří, tam se mají dostat až při deploymentu pomocí collectstatic. Zřejmě jsi omylem přehlédl komentář:
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')

Tvoje statické soubory mají být v STATICFILES_DIRS a pak v adresářích static/ v jednolivých apps. Tam si je django development server najde. Takže si přesuň adresáře css a pictures z /static do /project_static_files. 




2013/5/20 Robert Jonathan Šimon <berti...@gmail.com>
jestli to někomu pomůže, tak zde je zdrojový kódy stránky
--
--

Robert Jonathan Šimon

unread,
May 20, 2013, 10:08:17 AM5/20/13
to djan...@googlegroups.com
moc ti děkuju, už mi to funguje


Dne sobota, 18. května 2013 22:46:46 UTC+2 Robert Jonathan Šimon napsal(a):
Ahoj,

Robert Jonathan Šimon

unread,
May 20, 2013, 11:16:48 AM5/20/13
to djan...@googlegroups.com
Ještě jedna otázka, jde udělat nějak jednodušeji, template url?abych pokaždé když přemístím celý projekt do jiné složky, tak abych nemusel měnit settings?
Předem děkuji


Dne sobota, 18. května 2013 22:46:46 UTC+2 Robert Jonathan Šimon napsal(a):
Ahoj,

Martin Kubát

unread,
May 20, 2013, 11:24:02 AM5/20/13
to djan...@googlegroups.com

Ahoj.
Tento řádek: PROJECT_ROOT = os.path.dirname(os.path. dirname(os.path.abspath(__file__))) zajišťuje, že budeš mít PROJECT_ROOT  naplněn správně.
Měl bys jej používat jako konstantu pro celý projekt.
Zkus si v samostatném py souboru vyprintovat hodnotu __file__ a uvidíš, co to bude tisknout.
MK

Dne 20.5.2013 17:16 "Robert Jonathan Šimon" <berti...@gmail.com> napsal(a):
--

Radim Novotny

unread,
May 20, 2013, 11:33:09 AM5/20/13
to djan...@googlegroups.com
v settings.py to mas vsude spravne (relativne) az na TEMPLATE_DIRS ktere si musis taky opravit.


2013/5/20 Robert Jonathan Šimon <berti...@gmail.com>
Ještě jedna otázka, jde udělat nějak jednodušeji, template url?abych pokaždé když přemístím celý projekt do jiné složky, tak abych nemusel měnit settings?

--

Robert Jonathan Šimon

unread,
May 20, 2013, 2:25:58 PM5/20/13
to djan...@googlegroups.com
Moc děkuji, os.path.join(PROJECT_ROOT, 'Template') opraveno


Dne sobota, 18. května 2013 22:46:46 UTC+2 Robert Jonathan Šimon napsal(a):
Ahoj,
Reply all
Reply to author
Forward
0 new messages