404 找不到静态文件 - Django

我有一个关于 django 的问题。我最近购买了一个共享服务器的实例,我想将我的 django 网站从 AWS 移动到该服务器(使用 Cpanel)。在 AWS 上一切正常,但当我切换到 Cpanel 时,所有静态文件都丢失了。


这是我的设置.py:


STATIC_URL = '/static/'

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


MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

MEDIA_URL = "/media/"


STATICFILES_DIRS = [

    os.path.join(BASE_DIR, 'static'),

    ]

我的项目结构:


my_project

|-app/

    |-...

    |-views.py

|-db.sqlite3

|-manage.py

|-media/

|-my_project/

    |-...

    |-settings.py

|-static/

    |-main_page/

        |-js/

            |-my-script.js

我像这样添加静态文件:


{% load static %}

<script src="{% static 'main_page/js/my-script.js' %}"></script>


这是错误:


GET http://my.domain.com/static/main_page/js/my-script.js net::ERR_ABORTED 404 (Not Found)

当我转到文件的 URL 时,它会将其理解为我的 URL 之一:

404错误截图

胡说叔叔
浏览 126回答 2
2回答

qq_花开花谢_0

您需要在 urls.py 中添加静态和媒体文件配置,如下所示from django.conf import settingsfrom django.conf.urls.static import staticurlpatterns = [&nbsp; &nbsp; # ... the rest of your URLconf goes here ...]&nbsp;urlpatterns&nbsp; +=&nbsp; static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)django 文档:https://docs.djangoproject.com/en/3.1/howto/static-files/

人到中年有点甜

对于那些仍在寻找静态文件解决方案的人,请尝试 Django 包Whitenoise。如果您按照说明进行操作,则安装和使用都很容易。一些简化的步骤:收集静态 - 确保安装前存在静态文件 python manage.py collectstatic安装 Whitenoise - 此步骤取决于您如何管理软件包、更新正确的文件(例如 Pipfile 或requirements.txt)并安装。下面的命令只是安装包的示例。 pip install whitenoise更新settings.py中的静态根 STATIC_ROOT = BASE_DIR / "staticfiles"将以下内容添加到您的MIDDLEWAREsettings.py 中 - 来自 Whwitenoise 文档,Whitenoise 包应放置在django.middleware.security.SecurityMiddleware `MIDDLEWARE = [   'django.middleware.security.SecurityMiddleware',   'whitenoise.middleware.WhiteNoiseMiddleware', #add it here exactly after security middleware   ... ]现在重新启动或重建应用程序以检查它是否适合您。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python