404 找不到静态文件 - Django

404 Static file not found - Django

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

这是我的 settings.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 之一:

希望你能帮我解决这个问题;) 谢谢。

您需要在 urls.py 中添加静态和媒体文件配置,像这样

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] 
urlpatterns  +=  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/