概述
这次我遇到了一个坑,我通过django中的models模块与mysql数据库做交互,其中涉及到存图片的问题,我的设想是上传图片,然后图片保存在media下的img文件夹中,我就在settings中配置media的静态路由。
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
然后我就去urls中设置media的路由。
from django.contrib import admin
from django.urls import path, re_path
from django.conf.urls.static import static
from django.views.static import serve
from . import settings
from blogs import views
urlpatterns = [
path('admin/', admin.site.urls),
#meidia的相关配置
re_path(r'media/(?P<path>.*)$', serve, {'document_root':settings.MEDIA_ROOT}),
path('', views.index),
path('<int:id>', views.commodity_details, name='commodity_detail'),
path('search/commodity', views.search_commodity, name = 'search_commodity'),
path('search/<path:sort>', views.search_sort, name = 'search_sort'),
path('login', views.login, name = 'login'),
path('user_login', views.user_login, name = 'user_login'),
path('user_register', views.user_register, name = 'user_register'),
]
# urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
起先我是按照大众思想,就是代码块最后面的那行注释了的代码进行配置的。结果发现其他的都没问题,就是在前端中不显示图片,检查时图片url什么的都没问题,状态码也是200,也没有报错,但是图片就是不显示,这就很头疼,后来才发现当我这样在数据库存入少量图片的时候,图片还能显示,但是当我的数据存多了之后,就没有办法显示了。原来是应为media下面还有一个img文件,是这趟导致图片显示不出来的。
后来我就将
# urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
这行代码注释了,(切记一定要注释掉或删除上面的代码)加上了这行代码
re_path(r'media/(?P<path>.*)$', serve, {'document_root':settings.MEDIA_ROOT}),
当然在这行代码前不要忘了导包
from django.urls import path, re_path
这样就可以成功显示media中img下的文件了。
这里我还是将我models中创建表的代码贴在这里。
commodity_image = models.ImageField(upload_to = 'img')
好了,这次的python之坑也就先到这里了,如果各位有什么疑问的话,欢迎留言。
最后
以上就是执着毛豆为你收集整理的django2无法显示图片的全部内容,希望文章能够帮你解决django2无法显示图片所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复