I am experienced with Python but new to Django and web development in 
general. I am struggling to understand its static files system from the 
documentation <https://docs.djangoproject.com/en/1.5/howto/static-files/>. 
It seems like I have to set multiple settings variables and create multiple 
folders in order to get the server to accomplish the simple task of 
"finding" these files. After toying with it for a few hours I haven't been 
able to get the static files system to work and and have resorted to the 
following system which is probably a very bad idea:

In views.py:

from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.template import RequestContext
import datetime
import os.path
import settings

statictypes = {".css": "text/css",
               ".js": "text/javascript"}

def servestatic(request, filename):
    fullfilename = os.path.join(settings.STATIC_ROOT, filename)
    ext = os.path.splitext(filename)[1]
    return HttpResponse(open(fullfilename).read(), 
content_type=statictypes[ext])

And in urls.py:

from django.conf.urls import patterns, include, url
import mysite.views as views

staticextensions = [ext[1:] for ext in views.statictypes.keys()]
staticextstring = '|'.join(staticextensions)

urlpatterns = patterns('',
...
    (r"([^/]+\.(?:%s))$" % staticextstring, views.servestatic)
)

This actually works (and I could optimize it by caching the static file 
contents in memory rather than continually rereading them), but of course 
it's circumventing Django's built-in system for managing static files. My 
project architecture looks like this:

mysite
|
|--manage.py
|--mysite
   |
   |__init__.py
   |settings.py
   |urls.py
   |views.py
   |wgsi.py
   |--static
   |  |
   |  |--jquery.js
   |  |--TestFormat.css
   |
   |--templates
      |
      |--TestTemplate.html

At the beginning, the documentation page mentions, "For small projects, 
this isn’t a big deal, because you can just keep the static files somewhere 
your web server can find it." This sounds like the simple solution I'm 
looking for; what does it mean and how do I do it? I'm also frequently 
confused by how when I created the project it created two nested folders 
with the same name. Which is considered to be the "project root"?

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to