Django 2.2静态文件在生产中不起作用(DEBUG False)[重复]

Posted

技术标签:

【中文标题】Django 2.2静态文件在生产中不起作用(DEBUG False)[重复]【英文标题】:Django 2.2 staticfiles don't work in production (DEBUG False) [duplicate] 【发布时间】:2019-12-10 14:48:59 【问题描述】:

我正在制作一个新的 django 应用程序,用户可以在其中上传图像,然后它们可以显示在页面上。我已经阅读了大量的 django staticfiles 部署文档,但不明白为什么它们仍然不起作用。

我所有的图像都将转到它们应该在的位置,并且在我的模型 django 的管理中具有通向图像的正确路径,但它无法正确加载。

我在 settings.py 中的设置:

STATIC_URL = '/static/'
STATIC_ROOT = 'static' # live cdn such as AWS S3

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

MEDIA_ROOT = os.path.join(STATIC_ROOT, 'media')
MEDIA_URL = '/img/'

我的目录:

|- src
    |- myproject
        |- settings.py, views.py, urls.py etc
    |- myapp
        |- views.py urls.py models.py forms.py etc
    |- static (this folder is empty and appeared after running collectstatic
    |- templates
    |- db.sqlite3
    |- manage.py
|- static (this folder is OUTSIDE src)
    |- admin
        |- django admin stuff
    |- media
        |- img
            |- myimage.png

在 myapp 的 models.py 中 imagefield upload_to = 'img/'

如果我处于调试模式并添加推荐的代码以使其工作:

if settings.DEBUG:
    from django.conf.urls.static import static

    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

一切正常。这只是在调试模式下。我知道文档说这仅在调试模式下有效,但我还是尝试了。我正在尝试一切。

多年来我一直在尝试解决此问题,但我无法从任何人那里获得任何帮助,并且 django 文档和其他 *** 问题/答案也没有任何帮助。

感谢您的帮助!

注意:这与我之前的问题不同,请不要再次关闭它。尝试

【问题讨论】:

您在this question 中声称您已经阅读了 django 文档 10000 次,但显然您还没有阅读过一次。文档中明确指出:This helper function works only in debug mode. @Selcuk 我打算删除它,因为我知道有人会将其标记为欺骗,但 *** 说“不要删除已回答的问题”。我读过那部分,我知道,但我包括我知道的一切(我的意思是一切)。 我并不是建议您删除其他问题。你真的应该阅读文档。请参阅重复的问题以获得您的答案。 【参考方案1】:
|- src
    |- myproject
        |- settings.py, views.py, urls.py etc
        |- static # This is where your static files should be...
    |- myapp
        |- views.py urls.py models.py forms.py etc
    |- static # This is where all your static files will be collected and served from
    |- templates
    |- db.sqlite3
    |- manage.py

【讨论】:

我如何让我的静态文件去那里?因为如问题中所述,它们当前位于 src 文件夹之外 如果它们与项目相关,它们不应该在 src 文件夹之外

以上是关于Django 2.2静态文件在生产中不起作用(DEBUG False)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Tailwind 自定义背景图像在生产中不起作用

使用某些令牌发送后,Apple 推送通知在生产中不起作用

在 Docker 上运行时,Spring Boot 上传功能在生产中不起作用

SMTP 配置在生产中不起作用

谷歌推送通知在生产中不起作用

iOS推送通知在生产中不起作用