为什么django可以提供媒体文件但无法提供静态文件

时间:2014-12-14 09:10:14

标签: python django

我为我的django项目设置了Apache,这是我在Apache httpd.conf文件中添加的代码:

WSGIScriptAlias / E:/Django/mysite/mysite/wsgi.py
WSGIPythonPath E:Django/mysite/

<Directory E:/Django/mysite/mysite/>
<Files wsgi.py>
Require all granted`
</Files>
</Directory>

服务器运行没有问题,但奇怪的是,当我浏览我的网站时,我发现所有媒体文件都已成功加载,但无法加载所有静态文件(在浏览器控制台中,它报告一个404(未找到)错误)。

以下是settings.py文件中有关媒体文件和静态文件的设置:

STATIC_URL = '/static/'

MEDIA_URL='/media/'

MEDIA_ROOT=os.path.join(BASE_DIR,'media')

STATIC_ROOT=os.path.join(BASE_DIR, "static")

STATICFILES_DIRS = (    os.path.join(BASE_DIR, "static"),
    os.path.join(BASE_DIR, "media"),)

在urls.py中,我没有添加任何类似urlpatterns + = static(...,...)

任何人都可以帮我弄清楚为什么媒体文件没问题但是无法加载静态文件?

1 个答案:

答案 0 :(得分:0)

Django不处理生产中的静态文件。您需要使用apache链接静态文件或使用Nginx

mod_wsgi的:

Alias /static/ /path/to/project/static/
<Directory /path/to/project/static>
Require all granted
</Directory>

或nginx:

location /static/ {
        alias /opt/project/static/;
    }

至少这是正确的方法,让你的服务器处理它们,或者在nginx的情况下你的反向代理。