django提供静态文件的404错误。如何设置Django服务静态文件?

时间:2018-09-28 18:04:20

标签: django django-views

Project目录中的Settings.py文件:

我已经添加了以下内容:

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

->在模板中

<script src="{% static "validateurl/home.js" %}"></script>

我在项目目录下有一个目录静态。 home.js在静态下的 validateurl 目录下。

在模板html文件中使用以下代码引用JS文件:

enter image description here

请告诉我我在这里想念的东西。

以下错误:

enter image description here

1 个答案:

答案 0 :(得分:2)

以下是配置django应用以为本地开发提供静态文件的步骤。

STATIC_ROOT的默认值为“无”,因此您必须在设置中指定该值。确保您的settings.py中包含类似内容。这会告诉您的网络服务器在哪里找到并提供映射到url的静态文件。

import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

第二个还指定您的STATIC_URL变量,因为它也默认为none。以下内容就足够了。这将用于设置urlpattern。

STATIC_URL = '/static/'

您需要使用url模式,以便您的服务器知道与静态文件对应的url

from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

在设置中指定STATICFILES_DIRS变量。这样,收集静态管理器便知道在哪里可以找到静态变量并将其放入STATIC_ROOT中。这可以是到不同目录的项目的数组或元组。如果没有其他目录,则可以为空

STATICFILES_DIRS =  (os.path.join(BASE_DIR, 'pathtohomejsdirectory/'),)

最后,请确保您运行python manage.py collectstatic 这会将STATICFILES_DIRS中指定的所有文件复制到/ static /(STATIC_ROOT)目录中,以供Django服务。

制作中,您希望您的网络服务器/反向代理使用nginx或apache来提供文件。参见django文档here