在Django中设置静态文件

时间:2014-04-18 12:15:57

标签: python django file static

我在开发服务器上的Django项目中设置静态文件时遇到问题。我使用Django-1.6.1和Python 2.7.5+。

我按照这个链接的指示: Managing static files (CSS, images)

所以,我将 django.contrib.staticfiles 添加到INSTALLED_APPS

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'BlogContent',
)

我设置了 STATIC_URL

STATIC_URL = '/static/'

我还修改了我的urls.py:

urlpatterns = [           
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', home_view ),
    url(r'^about/$', about_view )
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

在模板中我使用此标记:

{% load staticfiles %}
<img src="{% static "elo.jpg" %}"/>

并且所有文件都进入project_root / static /并且在运行服务器后我收到了这个:

"GET /static/elo.jpg HTTP/1.1" 404 1625

你有任何想法如何解决它?提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

Django本身并不提供文件;它将该作业留给您选择的任何Web服务器。 请删除+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)中的urls.py。使用Apache2存储静态或媒体文件

https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#serving-files

在您的Apache *.conf文件(Apache 2.4)

<VirtualHost *:80>
        ServerName example.com
        ServerAdmin example@example.com

        Alias /media/ /home/tu/blog/media/
        Alias /static/ /home/tu/blog/collected_static/

        <Directory /home/tu/blog/media>
                Require all granted
        </Directory>

        <Directory /home/tu/blog/collected_static>
                Require all granted
        </Directory>

        WSGIScriptAlias / /home/tu/blog/blog/wsgi.py

        <Directory /home/tu/blog/blog>
        <Files wsgi.py>
                Require all granted
        </Files>
        </Directory>
</VirtualHost>

如果使用Apache 2.2,请使用

Order allow,deny
Allow from all

而不是

Require all granted

注意:您可以运行apachectl -v来查看Apache2版本

答案 1 :(得分:0)

这是一个nginx配置的spinet,用于提供静态文件&amp;代理名为APP的应用程序:

http {
…
    server {
        …
        location /static/ {
            autoindex on;
            alias /usr/share/nginx/html/static/;
        }

        location /APP {
            return 301 /APP/;
        }

        location /APP/ {
            rewrite ^/intranet(.*) /$1 break; 
            proxy_redirect off;
            proxy_pass http://127.0.0.1:8000;
        }
    }
}

请注意,我使用gunicornlocalhost:8000上运行我的应用,但我使用http://localhost/APP连接到该应用。