Why cant I get my static dir to work with django 1.3?

2024/10/3 4:38:29

This problem is very simple, but I just can't figure it out

added to my urlpatterns

url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/home/user/www/site/static'})

where my main.css is : /home/user/www/site/static/css/main.css

when I access http://localhost:8000/static/

I get: 404: Directory indexes are not allowed here.

when I access http://localhost:8000/static/css/main.css

I get: 404: 'css/main.css' could not be found

What am I doing wrong?

Fixed it:

url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT } ),

in settings.py

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(CURRENT_PATH, 'static') #=='/home/user/www/site/static'# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/mystatic/'

As you can see the only thing I really changed was from STATIC_URL = '/static/' to STATIC_URL = '/mystatic/'

note: when I got to http://localhost:8000/mystatic... I get the same errors as above

I thought that STATIC_URL was supposed to be '/static/' so that you could use {{ STATIC_URL }} in your templates... I really don't understand why this fix worked and why I had to make the change that I did....

Why does this work?

Answer

If you are using the built-in development webserver (i.e. run it with manage.py runserver), Django will take care of static files while in development.

Please note that STATIC_ROOT is the path where Django collects static files in, rather than the path that it serves files from. You should not maintain STATIC_ROOT yourself! You can read more on that in the Django documentation.

In general, you don't need to add django.views.static.serve to your urls, with the built-in server.

The static files should be placed elsewhere, besides STATIC_ROOT. You can place them either in the myapp/static path (i.e. under the individual app static file). You can also dedicate static folder for the entire project (e.g. /path/to/project/proj_settings) and update STATICFILES_DIRS in settings.py to be:

STATICFILES_DIRS = (# Put strings here, like "/home/html/static" or "C:/www/django/static".# Always use forward slashes, even on Windows.# Don't forget to use absolute paths, not relative paths.os.path.join(PROJECT_DIR, 'proj_static'),
)

Then you can place your css/main.css file in /proj_static/css/main.css. Django built-in webserver will server /static/ from there.

While in production, you should collect all the static files in STATIC_ROOT, by running manage.py collectstatic. Then you can serve that folder directly through your webserver (e.g. nginx, Apache), rather than through Django.

https://en.xdnf.cn/q/70769.html

Related Q&A

Desktop Launcher for Python Script Starts Program in Wrong Path

I can not launch a python script from a .desktop launcher created on Linux Mint 17.1 Cinnamon.The problem is that the script will be launched in the wrong path - namely the home folder instead of the d…

How does numpy broadcasting perform faster?

In the following question, https://stackoverflow.com/a/40056135/5714445Numpys broadcasting provides a solution thats almost 6x faster than using np.setdiff1d() paired with np.view(). How does it manage…

python check if utf-8 string is uppercase

I am having trouble with .isupper() when I have a utf-8 encoded string. I have a lot of text files I am converting to xml. While the text is very variable the format is static. words in all caps should…

Failed building wheel for Twisted in Windows 10 python 3

Im trying to install rasa-core on my windows 10 machine.When installing with pip install, I get: Failed building wheel for TwistedThe same error appears when trying to install Twisted separately.How co…

How to set a fill color between two vertical lines

Using matplotlib, we can "trivially" fill the area between two vertical lines using fill_between() as in the example: https://matplotlib.org/3.2.1/gallery/lines_bars_and_markers/fill_between_…

Pythonic way to read file line by line?

Whats the Pythonic way to go about reading files line by line of the two methods below?with open(file, r) as f:for line in f:print lineorwith open(file, r) as f:for line in f.readlines():print lineOr …

Python Selenium clicking next button until the end

This is a follow up question from my first question, and I am trying to scrape a website and have Selenium click on next (until it cant be clicked) and collect the results as well.This is the html tag …

How can i detect one word with speech recognition in Python

I know how to detect speech with Python but this question is more specific: How can I make Python listening for only one word and then returns True if Python could recognize the word.I know, I could ju…

Finding matching and nonmatching items in lists

Im pretty new to Python and am getting a little confused as to what you can and cant do with lists. I have two lists that I want to compare and return matching and nonmatching elements in a binary form…

How to obtain better results using NLTK pos tag

I am just learning nltk using Python. I tried doing pos_tag on various sentences. But the results obtained are not accurate. How can I improvise the results ?broke = NN flimsy = NN crap = NNAlso I am …