django 404页面未找到

knpiaxh1  于 2023-05-19  发布在  Go
关注(0)|答案(2)|浏览(112)

我对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一样理解它:

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

kdfy810k

kdfy810k1#

您需要在www.example.com中添加静态和媒体文件配置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/

wgx48brx

wgx48brx2#

对于那些仍然在寻找静态文件解决方案的人,请尝试Django包Whitenoise。如果你按照说明操作,它很容易安装,也很容易使用。
一些简化的步骤:
1.收集静态文件-确保安装前存在静态文件

python manage.py collectstatic

1.安装白噪声-这一步取决于你如何管理软件包,更新适当的文件(例如Pipfile或requirements.txt)并安装。下面的命令只是一个安装包的例子。

pip install whitenoise

1.更新www.example.com中的静态根目录settings.py

STATIC_ROOT = BASE_DIR / "staticfiles"

1.在www.example.com中将以下内容添加到您的MIDDLEWARE中settings.py-从Whwitenoise文档中,Whitenoise包应放置在django.middleware.security.SecurityMiddleware之后

`MIDDLEWARE = [
   'django.middleware.security.SecurityMiddleware',
   'whitenoise.middleware.WhiteNoiseMiddleware', #add it here exactly after security middleware
   ...
 ]

1.现在重新启动或重建应用程序,以检查它是否为您工作。

如果您遇到安装Whitenoise的问题,请查看Whitenoise文档(Whitenoise文档)

使用staticfiles_urlpatterns的消息:**这仅适用于settings.py中的DEBUG=True,这意味着您不应该将其用于生产环境。**请参阅此处的参考资料

相关问题