1

我有一个网站,用户可以在其中上传图片。它在 django 自己的服务器上运行良好。但我正在使用 apache 来服务我的应用程序和静态数据。当我上传任何图像时,我看不到照片。只有当我跑步时,collectstatic我才能看到它们。我总是要跑collectstatic吗?有没有更好的方法来做到这一点?

我的 settings.py 片段:

MEDIA_ROOT = 'C:/Users/Robin/web/leo/static'

STATIC_ROOT = 'C:/Users/Robin/static/'

STATICFILES_DIRS = (
    "C:/Users/Robin/web/leo/static",

Apache http.cont 片段:

AliasMatch ^/([^/]*\.css) C:/Users/Robin/static/styles/$1

Alias /static/ C:/Users/Robin/static/

<Directory C:/Users/Robin/static>
Order deny,allow
Allow from all
</Directory>

WSGIScriptAlias / C:/Users/Robin/web/leo/leo/wsgi.py

<Directory C:/Users/Robin/web/leo/leo>
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>
4

1 回答 1

2

您应该将媒体文件与静态文件分开。媒体用于用户上传的文件,静态用于开发人员提供的文件(通常是样式和脚本)。MEDIA_ROOT并且STATIC_ROOT应该指向不同的目录。您运行collectstatic将所有静态文件从您的源代码和各种应用程序(也包括第三方)复制到STATIC_ROOT,以便 Apache 可以为它们提供服务。您不需要运行collectstatic任何特殊的东西来为您的媒体文件提供服务。

示例配置:

Alias /static/ C:/Users/Robin/static/
Alias /media/ C:/Users/Robin/media/

<Directory C:/Users/Robin/static>
    Order deny,allow
    Allow from all
</Directory>

<Directory C:/Users/Robin/media>
    Order deny,allow
    Allow from all
</Directory>
于 2013-09-04T19:43:43.107 回答