关于Django图片上传
- 首先要设置settings
# 上传文件
MEDIA_ROOT = 'media' # 项目下的目录
MEDIA_URL = "/media/" # 跟STATIC_URL类似,指定用户可以通过这个url找到文件
- setting 设置模板中使用MEDIA_URL
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_URL
- url中要设置
from django.conf import settings
from django.conf.urls.static import static urlpatterns = [
#省略中间url
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
- models设置图片字段和保存位置
class UserProfile(models.Model):
username = models.ForeignKey(User, related_name='User_Profiles', on_delete=models.CASCADE)
avatar = models.FileField(upload_to='avatar', blank=True,null=True, verbose_name='头像')
如上将会保存在/media/avatar目录下
- HTML页面
<form role="form" enctype="multipart/form-data" action="{% url 'upload_avatar' %}"
method="POST">
{% csrf_token %}
<div>
{% for img in imgs %}
<img src="{{ user.User_Profiles.first.avatar }}" alt="">
{% endfor %}
</div>
<div>
<input class="btn-success" type="file" name="img">
<button class="btn btn-success" type="submit">变成头像</button>
</div>
</form>
HTML代码
- views后端保存图片
def upload(request):
if request.method == 'POST':
# 如果有头像,先删除照片再删除数据库
if not UserProfile.objects.filter(username=request.user, avatar=''):
project_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
media_path = os.path.join(project_path, 'media')
print(media_path)
try:
avatar_name = request.user.User_Profiles.first().avatar.name
avatar_path = os.path.join(media_path, avatar_name)
os.remove(avatar_path)
except Exception as e:
print(e)
UserProfile.objects.filter(username=request.user).delete() new_img = UserProfile(username=request.user, avatar=request.FILES.get('img'))
new_img.save()
return redirect('my_account')
后端保存图片
关于Django图片上传的更多相关文章
- 配置django图片上传与保存展示
近来在研究django,发现有好多好玩的功能,比如图片上传,以前处理这个比较麻烦,现在我们来看看如何来处理图片上传与保存 1.在数据库设计的时候需要配置upload_to image = models ...
- django 图片上传与显示
由于图片上传的需要,学习了一波上传 1. 上传 前端代码 <form action="写上相应的定向位置" method="post" enctype=& ...
- django图片上传修改图片名称
storage.py # 给上传的图片重命名 from django.core.files.storage import FileSystemStorage from django.http impo ...
- Django 图片上传到数据库 并调用显示
环境:Django2.0 Python3.6.4 建立项目,数据库设置,就不说了. 直接上代码: 在models.py中,需要建立模型,这里使用了ImageField字段,用来存储图片路径,这个字段继 ...
- Django图片上传和前端展示
1 - 模型 class Book(models.Model): #定义图书模型 book_name = models.CharField(max_length=100,verbose_name='书 ...
- django 图片上传 前段+后端
1.前台<form method="post" action="./writerApply" enctype="multipart/form-d ...
- Django 图片上传、存储与显示
参考博客:http://www.cognize.me/2016/05/09/djangopic 开始之前要先安装python图像处理库:pip install --use-wheel Pillow 一 ...
- Django中怎么做图片上传--图片展示
1.首先是html页面的form表单的三大属性,action是提交到哪,method是提交方式,enctype只要有图片上传就要加这个属性 Django框架自带csrf_token ,所以需要在前端页 ...
- Django配置图片上传
本文首先实现django中上传图片的过程,然后解决富文本编辑器文件上传的问题. 一. 上传图片 1.在 settings.py 中配置MEDIA_URL 和 MEDIA_ROOT 在 D:\blog ...
随机推荐
- 4,ZooKeeper原理
1,ZooKeeper概述 ··· 作用: · ZooKeeper是为分布式应用程序提供的一个分布式开源协调框架,是Hadoop和Hbase的重要组件: · 主要用于解决分布式集群中应 ...
- Redis入门(介绍、搭建)——Windows、Centos环境
一.介绍 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cac ...
- 一个用python写的比特币均线指标
https://blog.csdn.net/gsl222/article/details/104554397 https://github.com/yyy999/auto_ma912 一个用pytho ...
- 生成JavaDoc文档
JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了.在简略介绍JavaDoc写法之后,再看一下在Intellij Idea 中如何将代码中的注释 ...
- 源码浅析:InnoDB聚集索引如何定位到数据的物理位置,并从磁盘读取
索引结构概述: MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址.这与Oracle的索引结构相似,比较好理解.那么,常用的Innodb聚集索引结构是怎样的呢? InnoDB的数据文 ...
- 【HDU - 1087 】Super Jumping! Jumping! Jumping! (简单dp)
Super Jumping! Jumping! Jumping! 搬中文ing Descriptions: wsw成功的在zzq的帮助下获得了与小姐姐约会的机会,同时也不用担心wls会发现了,可是如何 ...
- cf877D
题意简述:矩阵中有的点不能走,你每次可从四个方向走,至少走一步,最多走k步(不能横跨那些不能走的格子),问从(sx,sy)走到(tx,ty)的最短时间是多少? 题意:利用set来加速bfs的过程,原理 ...
- Excel 2016双击文件打开后是空白,再次双击才能打开(或者通过文件,打开才能打开)
问题描述: 直接双击excel文件打开后是空白的,几乎所有功能都无法使用.但是再次双击该文件能够打开,或者通过文件 --> 打开的方式才能打开. 虽说能够打开文件,但是对于咱们这种追求完美的人来 ...
- css3元素如何扭曲、移位或旋转
css3 transform 兼容性:IE10+ transform:rotate(deg) 正数为顺时针,负数为逆时针 <!DOCTYPE html> <html lang=&qu ...
- SpringBoot 教程之 banner 定制
目录 简介 变量 配置 编程 示例 参考资料 简介 Spring Boot 启动时默认会显示以下 LOGO: . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ ...