I think the load staticfiles does the same.
The problem is you are putting it in a .py file? It should be in a template.
(or that seems to be a typing error)
Ah I see, you miss the path to the template:
return render_to_response('inici.html'
should be:
return render_to_response('/principal/inici.html'
make a path templates in principal dir
and a subpath in templates called principal again:
principal/templates/principal
and put your template (.html) there
/projecte
manage.py
/projecte
settings.py
url.py
wsgi.py
/templates (dir for your project templates)
/projecte
/admin (e.g. if you want to override your admin templates, do it here)
/var ( a dir used operationaly for all variable things... logs, files, db)
/static
/css
estil.css
/media
/logs
/sqlite (for testing only, unless you use sqlite operational as well)
/principal
models.py
views.py
forms.py
/templates (a dir for your application templates)
/principal
inici.html
/media
and make sure he finds the templates... one second:
use in settings.py:
import os
SETTINGS_DIR = os.path.dirname(os.path.realpath(__file__))
BUILDOUT_DIR = os.path.abspath(os.path.join(SETTINGS_DIR, '..'))
STATIC_ROOT = os.path.join(BUILDOUT_DIR, 'var', 'static')
STATIC_URL = '/static_media/'
MEDIA_ROOT = os.path.join(BUILDOUT_DIR, 'var', 'media')
MEDIA_URL = '/media/'
TEMPLATE_DIRS = (
os.path.join(SETTINGS_DIR, "templates"),
)
TEMPLATE_CONTEXT_PROCESSORS = (
.....
# Extra for django-staticfiles.
'staticfiles.context_processors.static_url'
......
)
INSTALLED_APPS (
.....
'django.contrib.staticfiles',
'yourProjectName',
'yourAppName',
'staticfiles',
.....
I would put something like this in your remplate (.html) file:
<link rel="stylesheet"
href="{{ STATIC_URL }}iamapps/iamapps.css"
type="text/css"
media="screen, projection" />
By the way where you put your templates dir depends.... in your app path if it belongs to your app (principal i guess), in your site dir if it's use to the whole site (projecte)
and in your views .py there are 2 ways to do it,
the classical way: (e.g.)
def home(request, template='principal/home.html'):
logger.debug("Home view called by user %s" % request.user)
return render_to_response(template,{},context_instance=RequestContext(request))
or the class based views:
class HomeView(TemplateView):
template_name = "principal/home.html"
If you wanna do it really nice, make a base template in your app template dir and extend this one, using in your inici.html:
{% extends 'prinicpal/base.html' %}
well before writing a complete tutorial here... it all depends on what you define and where you put it. Your question does not contain all the info to point out exactly where the error in your code is.
EDIT
With your information added, I rebuild your project, and it works for me with this settings:
with the same project structure as you gave in your question.
import os
RUTA_PROJECTE = os.path.dirname(os.path.realpath(__file__))
STATIC_ROOT = os.path.join(RUTA_PROJECTE,'static')
STATIC_URL = '/static/'
BUILDOUT_DIR = os.path.abspath(os.path.join(RUTA_PROJECTE, '..'))
DEBUG = False
TEMPLATE_DIRS = (
os.path.join(RUTA_PROJECTE, "templates"),
)
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
# Extra for django-staticfiles.
'staticfiles.context_processors.static_url',
)
INSTALLED_APPS = (
'django.contrib.staticfiles',
'principal',
'projecte',
'staticfiles',
)
ROOT_URLCONF = 'projecte.urls'
EDIT (31-12-2012)
and do not forget to add in your project urls:
if settings.DEBUG:
urlpatterns += patterns('',
(r'', include('staticfiles.urls')),
)