【问题标题】:Why django can serve media files but can not serve static files为什么django可以提供媒体文件但不能提供静态文件
【发布时间】:2014-12-14 09:10:13
【问题描述】:

我已经为我的 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(...,...) 的东西

谁能帮我弄清楚为什么媒体文件没问题但无法加载静态文件?

【问题讨论】:

标签: python django


【解决方案1】:

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 的情况下你的反向代理。

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 2017-10-28
    • 2020-05-21
    • 2013-03-27
    • 2012-10-29
    • 2012-07-07
    • 2021-07-08
    • 1970-01-01
    相关资源
    最近更新 更多