django - Django 服务静态文件时出现 404 错误。如何设置 Django 来提供静态文件?

标签 django django-views

项目目录中的 Settings.py 文件:

我已经添加了以下内容:

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

->在模板中

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

我在项目目录下有一个目录static。 home.js 位于 static 下的 validateurl 目录下。

在模板 html 文件中使用以下内容引用 JS 文件:

enter image description here

请告知我在这里缺少什么。

错误如下:

enter image description here

最佳答案

以下是配置您的 Django 应用程序以提供静态文件以进行本地开发的步骤。

STATIC_ROOT 默认为无,因此您必须在设置中指定。确保你的 settings.py 中有这样的东西,这会告诉你的网络服务器在哪里找到和提供映射到 url 的静态文件。

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

其次还要指定您的 STATIC_URL 变量,因为它也默认为无。以下就足够了。这将用于设置 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

关于django - Django 服务静态文件时出现 404 错误。如何设置 Django 来提供静态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52560619/

相关文章:

python - 测试上传 Excel 文件和 JSONField Django REST

Django 自定义中间件 request.user 总是 AnonymousUser

html - 在 Visual Studio Code 中为 django-html 文件添加格式化程序(美化器)

python - 反转 'home',参数 '()' 和关键字参数 '{}' 未找到。 0 种模式已尝试 : []

django - NoReverseMatch at/polls/Reverse for 'vote' with argument '(' ', )' not found. 1 pattern(s) tried: [' polls/(?P<question_id>[0-9]+)/vote/$']

javascript - 使用 AJAX 时 Django 未接收新的查询字符串

python - 在 Django 中测试重写的 save 方法

Django 不反射(reflect)对应用程序所做的更改

python - Django 从 postgresql 数据库填充下拉菜单的完整示例

html - Django 将变量传递给模板