zoukankan      html  css  js  c++  java
  • django使用admin站点上传图片

     

     

    Django有提供文件系统支持,在Admin站点中可以轻松上传图片。使用Admin站点保存图片,需要安装Python的图片操作包

    pip install Pillow

    1 配置 
    默认情况下,Django会将上传的图片保存在本地服务器上,需要配置保存的路径。我们可以将上传的文件保存在静态文件目录中,如我们之前设置的static_files目录中在settings.py 文件中添加如下上传保存目录信息

    MEDIA_ROOT=os.path.join(BASE_DIR,"static_files/media")

    2 为模型类添加ImageField字段 
    我们为之前的BookInfo模型类添加一个ImageFiled

    class BookInfo(models.Model):
        ...
        image = models.ImageField(upload_to='booktest', verbose_name='图片', null=True)

    upload_to 选项指明该字段的图片保存在MEDIA_ROOT目录中的哪个子目录,进行数据库迁移操作

    python manage.py makemigrations
    python manage.py migrate

    3 使用Admin站点上传图片 
    进入Admin站点的图书管理页面,选择一个图书,能发现多出来一个上传图片的字段admin站点图片字段,选择一张图片并保存后,图片会被保存在static_files/media/booktest/目录下。

    在数据库中,我们能看到image字段被设置为图片的路径

    django admin图片上传,更改路径和图片名称

     

    1.自定义 上传图片的保存路径和,图片名称格式。

    def upload_path_handler(instance, filename):
        filename="ewn1.jpg"#图片名称
        return "photos/{id}/{file}".format(id=instance.photo.title, file=filename)    #保存路径和格式

    2.models

    class Picture(models.Model):
        title = models.CharField('图片标题',max_length=100)
        image = models.ImageField('图片',upload_to=upload_path_handler, null =True, blank=True)
        summary = models.CharField('说明',max_length=100)
        photo=models.ForeignKey(Photo,verbose_name=u'相册')

    将upload_to的值设置为upload_path_handler即可

    以前总是想办法继承save方法,总是失败。原来是思路错了。。ok'!希望对大家有用

  • 相关阅读:
    pytest之断言
    python之self
    python标准数据结构类型
    pytest之fixture
    python之继承和多态
    安卓UI自动化,pytest+UIautomator2+allure+jenkins
    airtest
    Python中单下划线开头的特性
    系统默认分配的共享内存太小,导致zabbix_server无法启动
    运行yum报错Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
  • 原文地址:https://www.cnblogs.com/brady-wang/p/11715004.html
Copyright © 2011-2022 走看看