python - Django 2.2 静态文件在开发中不起作用
问题描述
我正在制作一个新的 django 应用程序,用户可以在其中上传图像,然后它们可以显示在页面上。我已经阅读了 django 文档 10000 遍,但我仍然不明白为什么我的图像没有加载(DEBUG = True)
我所有的图像都将转到它们应该在的位置,并且在我的模型 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/'
正如我所说,图像不会加载到页面上,而是上传到 static/media/img/image_name.png
我一直在尝试解决这个问题,但我无法从任何人那里得到任何帮助,django 文档和其他 stackoverflow 问题/答案也没有任何帮助。
我感谢你的帮助!
解决方案
在开发过程中提供用户上传的文件¶
在开发期间,您可以使用 django.views.static.serve() 视图从 MEDIA_ROOT 提供用户上传的媒体文件。
这不适合生产使用!有关一些常见的部署策略,请参阅部署静态文件。
例如,如果您的 MEDIA_URL 被定义为 /media/,您可以通过将以下代码段添加到您的 urls.py 中来做到这一点:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
推荐阅读
- jms - 只读 JMS 主题订阅?(或在出队时保留 JMS 消息)
- javascript - 无法冻结 GridView 标头
- javascript - 如何设置 MUI 概述的 TextField 的边框?
- c - 互斥文件读取同步
- heroku - PWA 不根据 manifest.json 显示自定义图标(Heroku 上的 Node.js)
- webpack - Laravel Mix LESS 编译在 Google 字体导入时失败
- javascript - 在 Chrome 中,我如何设置一个 cookie 的 max-age 小于 213 天?
- asp.net - IIS Express localhost 对于第一个请求的加载速度非常慢
- linux - Visual Studio Code Python 调试器段错误
- javascript - 在 TypeScript 文件中使用 Google Script 类型注释变量(使用 clasp)