django报错解决

报错:
WARNING 2022-02-19 09:18:17,492 basehttp 124 “GET /list/115/1/%7B%7B%20no%20such%20element:%20str%20object[‘url’]%20%7D%7D HTTP/1.1” 404 4530
WARNING 2022-02-19 09:18:17,497 basehttp 124 “GET /hot/115/ HTTP/1.1” 404 4353
INFO 2022-02-19 09:18:35,319 basehttp 124 “GET /list/115/1/?sort=price HTTP/1.1” 200 88068
WARNING 2022-02-19 09:18:35,359 base 152 Not Found: /list/115/1/{{ no such element: str object[‘url’] }}

html:
在这里插入图片描述
models:
在这里插入图片描述
因为views代码没问题,就不放了。

分析:
报错的大概意思是{{ sku.default_image.url }}里的sku.default_image没有url属性,但是我在前面的index.html中使用content.image.url却没有问题,这里的content和sku都是模型类,一个这么用没问题,一个却有问题,那么原因可能是这两个模型类的image定义字段有差别。
content:image = models.ImageField(null=True, blank=True, verbose_name=‘图片’)
sku:default_image=models.CharField(max_length=50, default=’’,null=True, blank=True, verbose_name=‘默认图片’)
看出区别了吗?
sku图片的创建使用的CharField,这个CharField导致我重写的class FastDFSStorage(Storage)(代码放在最后)压根用不上了,因为这个类是为了给ImageField用才重写的。

解决方法:
所以解决方法是:将default_image=models.CharField(max_length=50, default=’’,null=True, blank=True, verbose_name=‘默认图片’)
改为
default_image = models.ImageField(null=True, blank=True, verbose_name=‘默认图片’)
然后重新创建migrations文件并做迁移。

附FastDFSStorage代码

from django.conf import settings
from django.core.files.storage import Storage


class FastDFSStorage(Storage):
    """自定义文件存储系统,修改存储的方案"""

    def __init__(self, fdfs_base_url=None):
        """
        构造方法,可以不带参数,也可以携带参数
        :param base_url: Storage的IP
        """
        self.fdfs_base_url = fdfs_base_url or settings.FDFS_BASE_URL

    def _open(self, name, mode='rb'):
        pass

    def _save(self, name, content):
        pass

    def url(self, name):
        """
        返回name所指文件的绝对URL
        :param name: 要读取文件的引用:group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg
        :return: http://192.168.103.158:8888/group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg
        """
        # return 'http://image.meiduo.site:8888/' + name
        return self.fdfs_base_url + name

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值