Django项目'allproduct'反向解析错误及后台上传图片不显示问题求助
问题1 反向解析找不到
allproduct错误 错误原因
你的shop应用urls.py中定义的两个路由命名分别为allproductcat和product_by_catagory,不存在命名为allproduct的路由,但你在category.html模板中使用了{% url 'shop:allproduct' %}进行反向解析,因此触发报错。
解决方案
修改shop/urls.py中的路由命名,将首页路由的name修改为allproduct即可:
from django.urls import path from . import views app_name='shop' urlpatterns = [ path('',views.allproduct,name='allproduct'), path('<slug:c_slug>/',views.allproduct,name='product_by_catagory') ]
同时修正模板中字段拼写错误:你在模型中定义的分类描述字段为description,模板中误写为discription,同步修改即可避免描述内容不显示的问题。
问题2 后台上传图片前端无法显示
错误原因
有三个常见触发点:
- 模板字段名拼写错误
- 项目未配置媒体文件访问规则
- 缺少媒体文件存储目录
解决方案
步骤1 修正模板字段名
你的catagory和product模型中定义的图片字段为image,模板中误写为img,对应修改:
- 把
{{catagory.img.url}}改为{{catagory.image.url}} - 把
{{product.img.url}}改为{{product.image.url}}
步骤2 配置项目媒体文件规则
首先在项目根目录的settings.py末尾添加配置:
MEDIA_URL = '/media/' MEDIA_ROOT = BASE_DIR / 'media'
然后修改项目根目录的urls.py(注意是项目全局的urls,不是shop应用的urls),添加媒体文件访问路由:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 原有路由,比如admin路由、你的shop应用路由 ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
步骤3 创建存储目录
在项目根目录手动创建media文件夹,该文件夹用于存储后台上传的所有图片资源。
配置完成后重启Django服务即可正常加载图片。
内容的提问来源于stack exchange,提问作者aswin
相关产品推荐
相关产品推荐

