您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django无法找到我的媒体文件(在开发服务器上)

Django无法找到我的媒体文件(在开发服务器上)

您正在混合和匹配Django 1.3之前和之后的静态文件处理。最初,所有静态文件都由提供MEDIA_URL,但Django 1.3引入了staticfilescontrib软件包以及相关的STATIC_ROOTSTATIC_URL设置。django.views.static.serve利用您尚未设置的新staticfiles应用。

假设您正在运行Django 1.3,首先,您需要在其中添加“ staticfiles”INSTALLED_APPS。然后,您需要定义STATIC_ROOTSTATIC_URL。标准位置是名为“静态”的项目根目录。

您还需要添加staticfiles模板上下文处理器:

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'django.core.context_processors.static',
)

这将使STATIC_URL变量在模板中可用,因此您可以使用诸如{{ STATIC_URL }}css/style.css

您所有的静态资源也将需要进入一个名为“ static”的应用程序级目录。实际的项目根目录级别的“静态”目录从不直接使用。这只是collectstatic管理命令转储所有静态资源以供生产使用的地方。

如果您需要整个项目范围内的静态资源(不与任何一个特定的应用程序绑定),则需要一个完全独立的目录(即与MEDIA_ROOT 或不同STATIC_ROOT)。我倾向于使用一个名为“资产”的资产。然后,您需要告诉Django在此处查找静态资源以及该STATICFILES_DIRS设置:

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), 'assets'), # or whatever you named it
)

MEDIA_ROOT/MEDIA_URL现在仅用于用户上传(例如,通过FileFields和ImageFields创建的任何文件,因此您仍然需要它,但永远不会在其中手动存储任何内容

量产后,您的网络服务器将需要同时在和MEDIA_ROOTSTATIC_ROOT处提供服务。您还需要运行:MEDIA_URL``STATIC_URL

$ python manage.py collectstatic

为了使Django将所有静态文件编译到所指定的目录中STATIC_ROOT

Go 2022/1/1 18:48:48 有294人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶