Rosmontis&迷迭香的博客&鹤望兰分部

Rosmontis&迷迭香的博客
僅用於Bing訪客使用,若需要最新的文章,建議訪問rosmontis.com
  1. 首页
  2. 正文

Django—后台管理图片,上传图片与显示图片

2022年5月6日 10点热度 0人点赞 0条评论

Django 管理图片

图片的上传

1.模型定义 model.py

class Image(models.Model):
    image = models.ImageField(upload_to='images/%Y%m%d')

    class Meta:
        db_table = 'image'
        verbose_name = '图片'
        verbose_name_plural = verbose_name

2.注册到管理后台 admin.py

@admin.register(Image)
class ImageAdmin(admin.ModelAdmin):
    list_display = ('image',)

这时,在后台就可以实现图片的上传了,显然不是我们想要的,我们是想在前端HTML页面上实现图片上传。

接下来:

3.前端页面

<form action="{% url 'article:uploads' %}" method="post" enctype="multipart/form-data">
                    {% csrf_token %}

                    <div class="col-md-6 offset-md-3">
                        <input type="file" name="file_field" multiple="multiple" required="required">
                    </div>
                    <div class="col-md-6 offset-md-3">
                    </div>

                    <div class="modal-footer">
                        <input class="btn btn-info" type="submit" value="提交">
                    </div>
                </form>
  • enctype="multipart/form-data" 允许表单提交文件,必须写这一项。multiple="multiple" 允许一次提交多个文件。

这里只需要选择图片的时候,Windows电脑按着Ctrl键。

4.views.py

def uploads_files(request):
    if request.method == 'POST':
        files = request.FILES.getlist('file_field')
        for f in files:
            file = Image(image=f)
            file.save()
        return redirect(reverse('article:add_article'))
    else:
        return

5.路由配置

path('uploads/', views.uploads_files, name='uploads'),

6.setting.py必须配置

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

7.运行后,打开上传的图片页面,这里我是在博客中插入的,可以根据自己的需求更改路径.

支持多张图片同时上传

admin后台管理图片。

在后台管理图片的时候,虽然可以查看图片,不过需要点击,很麻烦。

优化:

1.修改model.py

增加部分内容

from django.utils.html import format_html
class Image(models.Model):
    
    ....
    ....

    def admin_image(self):
        return format_html(
            '<img src="{}" width="100px"/>',
            self.image.url,
        )

    admin_image.short_description = u'图片'
    admin_image.allow_tags = True

2.admin.py后台添加字段admin_image

@admin.register(Image)
class ImageAdmin(admin.ModelAdmin):
    list_display = ('image', 'admin_image',)

这样,我们就可以实现后台显示图片的缩略图了

文件或图片的上传位置和删除问题

你以为完了吗,不,还能优化,不信你删除一下试试,只是数据没了,但是文件还存在,这种情况需要优化。

model.py增加

from django.db.models.signals import post_delete
from django.dispatch import receiver
import os
# 重写删除文件功能,数据删除的时候,文件也跟随删除

@receiver(post_delete, sender=Image)
def delete_upload_files(sender, instance, **kwargs):
    files = getattr(instance, 'image', '')
    if not files:
        return
    fname = os.path.join(settings.MEDIA_ROOT, files.name)
    if os.path.isfile(fname):
        os.remove(fname)

重写上传位置

def upload_to_con(instance, filename):
    return '/'.join(
        [MEDIA_ROOT, 'article_insert' + instance.image.url, filename])
class Image(models.Model):
    image = models.ImageField(upload_to=upload_to_con)

迁移数据,就ok了

标签: 暂无
最后更新:2022年6月8日

Rosmontis

这个人很懒,什么都没留下

点赞

文章评论

取消回复

Rosmontis

这个人很懒,什么都没留下

本站文章约1个月与rosmontis.com同步一次

最新 热点 随机
最新 热点 随机
【拉环社】【Onedrive】仰望夜空的星辰Fine Days/抬头看看吧,看那天上的繁星Fine Days(FD)完整汉化+全CG(4.9GB) 【拉环社】【Onedrive】仰望夜空的星辰IF/抬头看看吧,看那天上的繁星IF -Interstellar Focus-(FD)完整汉化+全CG(2.8GB) 【漩涡社】鲸神的提亚斯提拉/鲸神的Tearstilla 鯨神のティアスティラ 完整汉化+全CG(3.2GB) 【拉环社】【Onedrive】仰望夜空的星辰/抬头看看吧,看那天上的繁星(本作) 见上げてごらん、夜空の星を 完整汉化+全CG(6.5GB) 【SAGA PLANETS】【Onedrive】FD:金色loveriche-金色时光- 金色ラブリッチェ -Golden Time- 完整汉化+全CG(5.5GB) 【SAGA PLANETS】【Onedrive】金辉恋曲四重奏/金色Loveriche 金色ラブリッチェ 完整汉化+全CG(5.6GB) 【Onedrive】娇蛮任性HIGHSPEC ワガママハイスペック 完整汉化(7.2GB) 【Alcot】【Onedrive】FD:将军大人芳华正茂 Fandisc 将軍様はお年頃 ふぁんでぃすく -御三家だヨ!全員集合- 完整汉化+全CG(3.0GB) 【Alcot】【Onedrive】将军大人芳华正茂/将军大人风华正茂 将军様はお年顷 完整汉化+全CG(4.20GB) 国产动画《京剧猫》,被运营耽搁的好动画,哀其不幸怒其不争! 【Onedrive】架向星空之桥AA 架向星空之桥FAN DISC 星空へ架かる桥AA 完整汉化(3.6GB) 【Onedrive】架向星空之桥 星空へ架かる桥 完整汉化(4.3GB) 【颜艺社】【Onedrive】寄宿之恋 かりぐらし恋爱 完整汉化+全CG(2.7GB) 【八月社】【Onedrive】秽翼的尤斯蒂娅 秽翼のユースティア 完整汉化(4.7GB) 【橘子社妈妈累】【Onedrive】回家之前的棉花糖 お家に帰るまでがましまろです 完整汉化+全CG(5.8GB) 【SAGA PLANETS】【Onedrive】花之天使的夏日恋歌 フローラル・フローラブ 完整汉化+全CG(3.7GB) 【音符社】【Onedrive】花与乙女的祝福+花与乙女的祝福 皇家花束 完整汉化(共3.9GB) 【2022.06更新】【Onedrive】最全!花吻在上/亲吻那片花瓣 その花びらにくちづけを 1~20本作+3番外共23作 完整汉化(约10.5GB) 【Onedrive】花色温泉乡/花色七芒星 花色ヘプタグラム 完整汉化(3.6GB) 【CRYSTALIA】红月摇曳的恋之星火SS 与旭同往~来自盛夏的某日~ 旭とワンルーム ~とある夏の一日~ 完整汉化+全CG (550MB) 【CRYSTALIA】红月摇曳的恋之星火SS 与红叶同住 ~来自盛夏的某日~ 紅葉とワンルーム ~とある夏の一日~ 完整汉化+全CG (580MB) 【CRYSTALIA】红月摇曳的恋之星火 紅月ゆれる恋あかり 完整汉化+全CG (2.5GB) 【Onedrive】FD:景之海的艾佩莉亚 ~卡萨布兰卡的骑士~ 景の海のアペイリア ~カサブランカの騎士~ 完整汉化+全CG(2.3GB) 【Onedrive】景之海的艾佩莉娅/海景的艾佩利雅 景の海のアペイリア 完整汉化+全CG(3.0GB) 【柚子社】【Onedrive】管乐恋曲!~The bonds of melody~ ぶらばん! ~The bonds of melody~ 完整汉化(3.0GB) 【Onedrive】【妹抱FD】哥哥,早上起床之前都要抱紧我哦!晚上睡觉之前学更多Java吧!完整汉化+全CG(4.4GB) 【Onedrive】哥哥,早上起床之前都要抱紧我哦!(妹抱)お兄ちゃん、朝までずっとギュってして!完整汉化+全CG(7.0GB) 【SLG】夏日狂想曲:乡间的难忘回忆 【拉环社】【Onedrive】在这苍穹展翅/在这苍穹之中展开双翼 この大空に、翼をひろげてIf My Heart Had Wings 完整汉化(4.3GB) 【拉环社】【Onedrive】在这苍穹展翅-飞行日志- If My Heart Had Wings -Flight Diary- この大空に、翼をひろげて FLIGHT DIARY 完整汉化(3.0GB)
【SLG】夏日狂想曲:乡间的难忘回忆【海豹社】【Onedrive】爱之钥系列 爱之钥田园夏日 アイカギ~アフターデイズ~ 完整汉化+全CG(1.4GB)【拉环社】【Onedrive】仰望夜空的星辰Fine Days/抬头看看吧,看那天上的繁星Fine Days(FD)完整汉化+全CG(4.9GB)【CRYSTALIA】红月摇曳的恋之星火 紅月ゆれる恋あかり 完整汉化+全CG (2.5GB)【柚子社】【Onedrive】管乐恋曲!~The bonds of melody~ ぶらばん! ~The bonds of melody~ 完整汉化(3.0GB)【Onedrive】哥哥,早上起床之前都要抱紧我哦!(妹抱)お兄ちゃん、朝までずっとギュってして!完整汉化+全CG(7.0GB)【Onedrive】景之海的艾佩莉娅/海景的艾佩利雅 景の海のアペイリア 完整汉化+全CG(3.0GB)【Onedrive】FD:景之海的艾佩莉亚 ~卡萨布兰卡的骑士~ 景の海のアペイリア ~カサブランカの騎士~ 完整汉化+全CG(2.3GB)【CRYSTALIA】红月摇曳的恋之星火SS 与红叶同住 ~来自盛夏的某日~ 紅葉とワンルーム ~とある夏の一日~ 完整汉化+全CG (580MB)【CRYSTALIA】红月摇曳的恋之星火SS 与旭同往~来自盛夏的某日~ 旭とワンルーム ~とある夏の一日~ 完整汉化+全CG (550MB)【Onedrive】花色温泉乡/花色七芒星 花色ヘプタグラム 完整汉化(3.6GB)【2022.06更新】【Onedrive】最全!花吻在上/亲吻那片花瓣 その花びらにくちづけを 1~20本作+3番外共23作 完整汉化(约10.5GB)【音符社】【Onedrive】花与乙女的祝福+花与乙女的祝福 皇家花束 完整汉化(共3.9GB)【SAGA PLANETS】【Onedrive】花之天使的夏日恋歌 フローラル・フローラブ 完整汉化+全CG(3.7GB)【橘子社妈妈累】【Onedrive】回家之前的棉花糖 お家に帰るまでがましまろです 完整汉化+全CG(5.8GB)【八月社】【Onedrive】秽翼的尤斯蒂娅 秽翼のユースティア 完整汉化(4.7GB)【颜艺社】【Onedrive】寄宿之恋 かりぐらし恋爱 完整汉化+全CG(2.7GB)【Onedrive】架向星空之桥 星空へ架かる桥 完整汉化(4.3GB)【Onedrive】架向星空之桥AA 架向星空之桥FAN DISC 星空へ架かる桥AA 完整汉化(3.6GB)国产动画《京剧猫》,被运营耽搁的好动画,哀其不幸怒其不争!【Alcot】【Onedrive】将军大人芳华正茂/将军大人风华正茂 将军様はお年顷 完整汉化+全CG(4.20GB)【Alcot】【Onedrive】FD:将军大人芳华正茂 Fandisc 将軍様はお年頃 ふぁんでぃすく -御三家だヨ!全員集合- 完整汉化+全CG(3.0GB)【Onedrive】娇蛮任性HIGHSPEC ワガママハイスペック 完整汉化(7.2GB)【SAGA PLANETS】【Onedrive】金辉恋曲四重奏/金色Loveriche 金色ラブリッチェ 完整汉化+全CG(5.6GB)【SAGA PLANETS】【Onedrive】FD:金色loveriche-金色时光- 金色ラブリッチェ -Golden Time- 完整汉化+全CG(5.5GB)【拉环社】【Onedrive】仰望夜空的星辰/抬头看看吧,看那天上的繁星(本作) 见上げてごらん、夜空の星を 完整汉化+全CG(6.5GB)【漩涡社】鲸神的提亚斯提拉/鲸神的Tearstilla 鯨神のティアスティラ 完整汉化+全CG(3.2GB)【拉环社】【Onedrive】仰望夜空的星辰IF/抬头看看吧,看那天上的繁星IF -Interstellar Focus-(FD)完整汉化+全CG(2.8GB)【雪碧社Sprite】【Onedrive】苍之彼方的四重奏EXTRA2 DL Edition 蒼の彼方のフォーリズム EXTRA2 生肉+全CG(3.5GB)【Onedrive】爱因斯坦携爱敬上APOLLOCRISIS アインシュタインより愛を込めて APOLLOCRISIS 汉化本体+全CG(2.3GB)
【明日方舟解包】【spine】歌蕾蒂娅 贴图立绘+动态骨架文件 Rosmontis免费二级域名分发上线!免费注册二级域名,多种后缀任你选 (docker环境)基于Oneindex搭建个人不限速网盘(连接个人Onedrive空间,不消耗服务器流量) 【音符社】【Onedrive】樱舞少女的轮舞曲~我想成为你的恋人~ (320MB) 一句代码永久破解宝塔面板所有插件,无限制下载使用 【拉环社】【Onedrive】仰望夜空的星辰Fine Days/抬头看看吧,看那天上的繁星Fine Days(FD)完整汉化+全CG(4.9GB) 【颜艺社】【Onedrive】寄宿之恋 かりぐらし恋爱 完整汉化+全CG(2.7GB) 哪吒服务器监控:监控服务器CPU,网络状态,内存等信息。支持监控报警,在线终端 如何使用Nginx为 Django 服务配置负载均衡 【橘子社妈妈累】【Onedrive】回家之前的棉花糖 お家に帰るまでがましまろです 完整汉化+全CG(5.8GB) 【生肉】【Onedrive】【CRYSTALiA】 RE:D Cherish! 初回版 パッケージ版 已打更新补丁,完整版+特典【3.3G】 【CRYSTALiA】【Onedrive/百度云】和椿同往-共结情缘的剑舞恋曲SS 椿とワンルーム -絆きらめく恋いろはSS- DL版&特典(400MB) 记录长达10天的DDoS攻击-从攻防到跑路,做网站的难谁能懂? 接Cloudflare证书错误——CAA证书认证失败 Django—使用PyJWT模块实现Token认证 【Onedrive】主播女孩重度依赖 完整汉化+攻略(2.5G)✞升天✞​✞升天✞​ Linux压力测试工具Apache Bench的安装和使用 迷迭香yyds!!! Django—用户注册登录功能实现 最完美安装Windows子系统的方法—kali子系统和图形化桌面安装教程 【YUZUSOFT】【百度云】RIDDLE JOKER 完整汉化硬盘版【7.0G】 用VB实现迅雷地址解密 嘿嘿嘿~~~ 【HARUKAZE】【百度云】野良与皇女与流浪猫之心-第一部 完整精翻汉化版+全CG存档【3G】 【YUZUSOFT】【百度云】天神乱漫 (LUCKY or UNLUCKY!?) 完整汉化硬盘版【7.5G】 【明日方舟】【YOUTUBE转载】轮到早露给你洗脑了 重装服务器后SSH无法连接服务器 隐藏服务器真实IP,禁止直接通过IP访问网站,防止SSL证书泄露源站 【音符社】【Onedrive】樱舞少女的轮舞曲~与你一起看冬樱(240MB) Django—使用Django Cache缓存提升网站访问速度

COPYRIGHT © 2022 Rosmontis&迷迭香的博客&鹤望兰分部. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang