在admin中上传图片

参考文章
环境:Django2.0 Python3.5.4

使用ImageField首先需要装Pillow。

 pip install Pillow 

配置

要在admin中上传图片,必须要在setting.py中经行路径配置,否则无法让django知道我们的路径在哪。为什么不在models中设置字段时直接设置绝对路径?在models中,只能设置相对路径,即upload_to所指的路径一定要是相对的。

配置MEDIA_URL,MEDIA_ROOT这2个关键字,我们可以把这个文件夹放在static中,但是MEDIA_URL后面不能写'/static/',MEDIA_URL相当于取别名
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static','image')(自己要upload_to的路径的文件夹)

models中创建字段

 class Test(models.Model):
     name = models.CharField(max_length=50)
     image = models.ImageField(upload_to='image')(这里的image是相对路径,绝对路径为:/static/image)
     def __str__(self):
         return self.name

建立好模型,需要进行迁移操作,

 python manage.py makemigrations  
 python manage.py migrate 

PS.如果是创建好表之后再想起来用保存图片的字段,需要在后面添加默认值defalt,否则django不知道为之前的表添加什么值,即使你还没有使用之前的数据库

绑定admin

admin.site.register(Test)

如何直接在admin中直接查看上传的图片

我们要看上传的图片还需要进一步配置,如果不配置,我们点开上传图片的url就会直接报错404,告诉我们在url配置中并没有你这个图片的url,无法跳转。
如何配置呢?
a.首先在setting中将我们的MEDIA_URL别名加在TEMPLATES中:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media',#在这加,前面都是一样的,只有最后的media是取你自己起的名字
            ],
        },
    },
]

b.找到urls.py,在里面引入setting

from django.conf import settings
from django.conf.urls.static import static

接着配置我们的urlpatterns

urlpatterns = [
    path('admin/', admin.site.urls),
   ……

] + static(settings.MEDIA_URL , document_root = settings.MEDIA_ROOT)#在列表后面加上这句

这样的话,我们点开admin中的图片路径就可以直接看到图片了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值