Django学习手册 - ORM - ImageField数据类型

前置步骤

setting.py文件配置:

  添加app目录

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]

  添加media文件和路径

Django学习手册 - ORM  - ImageField数据类型

PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname('__file__')))
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

app目录下models.py配置

from django.db import models

# Create your models here.

class Test(models.Model):
name = models.CharField(max_length=50)
image = models.ImageField(upload_to='logo/')

注意:

  ImageField() 依赖 Pillow (pip install Pillow)

  这里login是目录路径 完整的路径是 /media/logo/图片

Django学习手册 - ORM  - ImageField数据类型

这里图片可以通过Django admin后台直接添加

所有设置一下app里 admin.py文件

from django.contrib import admin
from app01.models import Test # Register your models here. admin.site.register(Test)

引入models 中的Test类  然后 admin.site.register(Test)

接着加载数据库 写入数据库

Django学习手册 - ORM  - ImageField数据类型

创建超级用户

Django学习手册 - ORM  - ImageField数据类型

然后就是正常的Django访问配置了:

urls.py配置

Django学习手册 - ORM  - ImageField数据类型

注意!!! 这里必须要添加static 目录,后端通过传递/media/logo/图片,而这里是将图片传递到前端浏览器,这样才能访问路径的图片

from django.contrib import admin
from django.urls import path
from app01 import views
from django.conf.urls import url
from django.conf import settings
from django.conf.urls.static import static urlpatterns = [
path('admin/', admin.site.urls),
url(r'index/', views.index),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

views.py配置

from django.shortcuts import render,HttpResponse
from app01 import models # Create your views here. def index(request):
img = models.Test.objects.all()
# img = models.Test.objects.filter(id=1)[0].image.url
return render(request,'index.html',{'img':img})

从数据库中读取图片路径 然后传递到前端页面.

前端页面:

后台传递的若是: img = models.Test.objects.all()
前端则是:
<body>
{% for i in img %}
<img src="{{ i.image.url}}">
{% endfor %}
</body>
后台传递的若是:img = models.Test.objects.filter(id=1)[0].image.url
前端则是:
<body>
{{ img }}
</body>

测试:

Django学习手册 - ORM  - ImageField数据类型

Django学习手册 - ORM  - ImageField数据类型

添加图片以后再 访问index页面

Django学习手册 - ORM  - ImageField数据类型

上一篇:django 自定义过滤器中的坑.


下一篇:js中获取时间戳