我知道这个问题在这里已经被问了好几次了。我已经搜索和阅读了一些答案,但没有帮助。我想,我错过了一些非常基本的东西。
In my settings.py, I have:
STATIC_URL = '/static/'
STATIC_ROOT = join(APPS_DIR, "static/")
# STATICFILES_DIRS = [join(APPS_DIR, 'static')]
MEDIA_ROOT = join(APPS_DIR, 'media')
MEDIA_URL = "/media/"
In my config/urls.py, I have:
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我有一个位于/static/core/js/jquery_countdown/jquery.countdown.min.js
的文件,我尝试将其加载到模板中,如下所示:
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="{% static 'core/js/jquery_countdown/jquery.countdown.min.js' %}"> </script>
同一模板的顶部看起来像
{% extends "contest/base.html" %}
{% load static %}
这将导致以下服务器错误:
[23/Mar/2018 10:12:08] "GET /static/core/js/jquery_countdown/jquery.countdown.min.js HTTP/1.1" 404 1858
我错过了什么?
3条答案
按热度按时间axr492tv1#
在应用目录中创建文件夹static_files。并将所有静态文件放入其中。然后使用以下设置
如果没有解决问题,运行
python manage.py collectstatic
命令,它会将所有静态文件(不仅来自你的应用,也来自django管理员,第三方应用等)复制到STATIC_ROOT文件夹。详细信息
对于本地服务,django服务器将查看
STATICFILES_DIRS
。因此您不需要运行python manage.py collectstatic
命令。所有外部应用程序可能都有STATICFILES_DIRS,它们放置静态文件的位置。对于生产服务器,您需要将分散在所有应用程序中的所有静态文件收集到一个位置。这就是python manage.py collectstatic
命令所做的。它会将所有静态文件复制到STATIC_ROOT
目录hfyxw5xn2#
您仅在应用程序目录中搜索静态文件,但您的文件位于全局静态文件中。您应使用注解STATICFILES_DIRS设置指定要搜索静态文件的所有位置。
z3yyvxxp3#
我发现这对我很有效。(开发)
(我选择将其命名为“zStatic”,以将其保存在根(项目文件夹)的底部,这样它就不会出现在我所有的应用程序中。更容易定位。)
设置.py
基本.html(* 基本模板 *)