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

时间:2022-04-11 19:49:43

前置步骤

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学习手册 - ORM - ImageField数据类型的更多相关文章

  1. Django学习手册 - ORM数据类型

    DOM 字段/参数 配置格式: Module.字段(参数) 常用的字段归纳: 数字 models.AutoField() 自增列(int),必须设置为主键 models.IntegerField() ...

  2. Django学习手册 - ORM 数据创建&sol;表操作 汇总

    ORM 查询的数据类型: QuerySet与惰性机制(可以看作是一个列表) 所谓惰性机制:表名.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它 ...

  3. Django学习手册 - ORM 多对多表

    定义表结构: class Host(models.Model): hostname = models.CharField(max_length=32) port = models.IntegerFie ...

  4. django 学习手册 - ORM 报错集&lpar;随时更新&rpar;

    报错问题: 问题一:(1050代码) django.db.utils.InternalError: (1050, "Table 'app01_group' already exists&qu ...

  5. Django学习手册 - ORM 外键

    Django 外键创建 关键语法: models.ForeignKey("UserGroup",to_field="gid",default=1,on_dele ...

  6. Django学习手册 - ORM 单表数据获取

    Django 单表数据的获取: 先建立数据表格 from django.db import models # Create your models here. class userinfo(model ...

  7. Django学习手册 - ORM sqlit基础数据库操作

    步骤阐述:( splitDB 是Django自带的一个数据库) 1.在APP01 中的 models.py 配置DB信息  userinfo 相当于数据表的表名,而 uname.pwd 相当于 表中的 ...

  8. Django学习手册 - ORM choice字段 如何在页面上显示值

    在module操作过程中使用choice字段: 核心: obj.get_字段名_display 定义module 数据结构: class msg(models.Model): choice = ( ( ...

  9. Django 学习 之ORM聚合查询分组查询与F查询与Q查询

    一.聚合查询和分组查询 1.聚合查询aggregate 关于数据表的数据请见上一篇:Django 学习 之ORM多表操作(点我) aggregate(*args, **kwargs),只对一个组进行聚 ...

随机推荐

  1. jquery取框架当前的url

    前提,当前frame无名或动态生成的: var url = eval($("#ifr1").attr("name")+".location.href; ...

  2. 分布式系列之二——Adaptor设计模式

    摘自:http://www.cnblogs.com/zhenyulu/articles/69858.html 注:将请求的一方和接收的一方独立,使得请求的一方不必知道接收请求的一方的接口,更不必知道请 ...

  3. SVG裁剪和平移的顺序

    SVG 里为元素添加 clip-path 属性即可做出裁剪效果,添加 transfrom 属性可以平移.旋转元素. 根据需求不同,有两种情况: 先裁剪元素,再把裁剪后的图形平移 先平移元素,再按区域裁 ...

  4. Unity 碰撞器和触发器的理解

    要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对 ...

  5. shopxx------list列表回显修改尝试

    需求:在商品列表展示页面增加一列 一.修改模板 1.列表页面对应的freemarker模板位置 /shopxx/WebContent/WEB-INF/template/admin/product/li ...

  6. webpack的build的时候时间长处理方案

    观察第一次build的时间比较长,之后的编译时间较短,可以通过webpack -watch 监测性能 1, 将webpack升级到4.0,build 的速度提升很多 2,用webpack -watch ...

  7. 使用h2数据库

    h2数据库提供了一个简单的web管理界面 import org.h2.tools.Server; import org.slf4j.Logger; import org.slf4j.LoggerFac ...

  8. DevexpressVCL v51

    Dev经典套件v49版 支持Delphi2010 DevExpress公司出品的Borland Delphi和C++ Builder的控件(包含完整源代码).ExpressVerticalGrid:就 ...

  9. &lpar;转载&rpar;C&num;控件缩写规范

    标准控件缩写规范 类 型 前 缀 示 例 Adrotator adrt adrtTopAd BulletedList blst blstCity Button btn btnSubmit Calend ...

  10. Github遇到Permanently added the RSA host key for IP address &&num;39&semi;52&period;74&period;223&period;119&&num;39&semi; to the list of known hosts&period;

    警告:为IP地址192.30.252.128的主机(RSA连接的)持久添加到hosts文件中,那就来添加吧! 解决办法: vim /etc/hosts 添加一行:52.74.223.119 githu ...