参考博客http://www.cognize.me/2016/05/09/djangopic

开始之前要先安装python图像处理库:
pip install --use-wheel Pillow

一、数据库设置

1. 先创建一个app,比如叫img_db。

命令行:python manage.py startapp img_db

2. 将其加入到settings.py文件中的INSTALLED_APPS中

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

3. 在models.py中创建表,图片存储使用的是 models.ImageField

例如:

class IMG(models.Model):
img = models.ImageField(upload_to='img')
name = models.CharField(max_length=20)

这里的upload_to是指定图片存储的文件夹名称,上传文件之后会自动创建

4. 更新数据库

python manage.py makemigrations
python manage.py migrate

二、修改配置文件setting.py

只需要在最后的静态文件区加上下面两行代码:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')     #设置静态文件路径为主目录下的media文件夹
MEDIA_URL = '/media/' #url映射

三、创建模板

1. 在APP目录下创建文件夹templates

注意:这是django默认的形式,如果想把模板放在其他路径,得自己重新配置。

2. 在templates文件夹下创建文件夹,比如叫img_tem

3. 在img_tem下创建模板

uploadimg.html

<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="img">
<button type="submit">上传</button>
</form>

showimg.html

{% for img in imgs %}
<img src="{{ img.img.url }}" />
{% endfor %}

这里img是Django的Model里的一个实例对象,使用img.img.url可以获取他的url,而且在settings.py中已经对其做了静态映射

四、创建视图函数 view.py

@csrf_exempt
def uploadImg(request):
if request.method == 'POST':
new_img = IMG(
img=request.FILES.get('img'),
name = request.FILES.get('img').name
)
new_img.save()
return render(request, 'img_tem/uploadimg.html')

首先用get方式访问uploadImg(),然后会跳转到uploadimg.html页面,上传文件时会使用post再次访问uploadImg(),这时就会将图片存储在数据库与media/img_tem中。

@csrf_exempt
def showImg(request):
imgs = IMG.objects.all()
content = {
'imgs':imgs,
}
for i in imgs:
print i.img.url
return render(request, 'img_tem/showimg.html', content

五、url.py配置

from django.conf.urls import url
from django.contrib import admin
import view
from django.conf.urls.static import static
from django.conf import settings urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^upload', view.uploadImg),
url(r'^show', view.showImg),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)  这句话是用来指定和映射静态文件的路径

完成之后就可以发布了。

Django 图片上传、存储与显示的更多相关文章

  1. django 图片上传与显示

    由于图片上传的需要,学习了一波上传 1. 上传 前端代码 <form action="写上相应的定向位置" method="post" enctype=& ...

  2. 配置django图片上传与保存展示

    近来在研究django,发现有好多好玩的功能,比如图片上传,以前处理这个比较麻烦,现在我们来看看如何来处理图片上传与保存 1.在数据库设计的时候需要配置upload_to image = models ...

  3. php图片上传存储源码,可实现预览

    <?php header("content-Type: text/html; charset=gb2312"); $uptypes=array('image/jpg', // ...

  4. Django 图片上传到数据库 并调用显示

    环境:Django2.0 Python3.6.4 建立项目,数据库设置,就不说了. 直接上代码: 在models.py中,需要建立模型,这里使用了ImageField字段,用来存储图片路径,这个字段继 ...

  5. django 网站上传资源的显示与配置

    1.  上传资源的配置 1. 首先在项目里创建一个名称叫media的文件夹专门保存用户上传 2. settings.py文件配置上传资源的路径 # 上传资源路径,如果图片,上传文件等 MEDIA_UR ...

  6. springmvc的图片上传与导出显示

    1.前端文件上传需要在form表单内添加enctype="multipart/form-data" ,以二进制传递: 2.web.xml文件内配置 <servlet-mapp ...

  7. django 图片上传 前段+后端

    1.前台<form method="post" action="./writerApply" enctype="multipart/form-d ...

  8. django图片上传修改图片名称

    storage.py # 给上传的图片重命名 from django.core.files.storage import FileSystemStorage from django.http impo ...

  9. 关于Django图片上传

    首先要设置settings # 上传文件 MEDIA_ROOT = 'media' # 项目下的目录 MEDIA_URL = "/media/" # 跟STATIC_URL类似,指 ...

随机推荐

  1. NOIP模拟赛-2018.11.7

    NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...

  2. 有意思的flex 色子布局

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. Springmvc常见问题

    问题一:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userCont ...

  4. sphinx搜索 笔记

    架构图: 安装sphinx,见文章http://my.oschina.net/ptk/blog/495435 sphinx关键的配置文件.在里面写查询的sql. 两个关键命令:indexer生成查询索 ...

  5. R语言入门 :基本数据结构

    1.向量 向量是R语言中最基本的数据类型,在R语言中没有单独的变量. (1)  创建向量 R语言中可以用 = 或者 <- 来赋值. 向量名 <- 向量 或  向量名 = 向量 向量的创建方 ...

  6. 大数据入门第十七天——storm上游数据源 之kafka详解(一)入门与集群安装

    一.概述 1.kafka是什么 根据标题可以有个概念:kafka是storm的上游数据源之一,也是一对经典的组合,就像郭德纲和于谦 根据官网:http://kafka.apache.org/intro ...

  7. 20155202张旭《网络对抗技术》 week1 PC平台逆向破解及Bof基础实践

    20155202张旭<网络对抗技术> week1 PC平台逆向破解及Bof基础实践 1.实践目标: 实践对象:一个名为pwn1的linux可执行文件. 该程序正常执行流程是: main调用 ...

  8. 20155237方自晨 实验四android开发基础

    提交点一 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章: 安装 A ...

  9. 20155321 《网络攻防》 Exp7 网络欺诈防范

    20155321 <网络攻防> Exp7 网络欺诈防范 实验内容 简单应用SET工具建立冒名网站 因为钓鱼网站是在本机的http服务下使用,因此需要将SET工具的访问端口改为http默认的 ...

  10. libgdx自制简易Flappy Bird

    Flappy Bird,好吧,无需多说.今天年初不知咋的,一下子就火了,而且直接跃居榜首,在ios和android平台都是如此,实在难以理解.传说其作者每天收入能达到5w刀,着实碉堡了... 好吧,咱 ...