关于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 ...
随机推荐
- .NET代码混淆工具NET Reactor - 初学者系列-学习者系列文章
这几天无事,除了看书,然后就倒腾原来的代码.想起.NET的代码混淆工具软件,所以今天就讲讲这个.NET代码混淆工具. .NET代码混淆工具软件,以前有了解和找过,但是当时需求不大,所以找了下就搁置了. ...
- C语言三(2)
多重 if...else....else 结构 语法: if(条件1) { 语句1; } else if(条件2) { 语句2; } else if(条件3) { 语句3; } else { 语句N; ...
- Java日志介绍(4)-Log4j2
Log4j2是Log4j的升级版,相比其前身Log4j 1.x提供了显著的改进,并提供了在Logback中提供的许多改进,同时修复了Logback体系结构中的一些固有问题. Log4j2的内容很多,本 ...
- android 华为、魅族手机无法打印 Log 日志的问题
最近使用魅族真机测试 App 时,发现 LogCat 不显示项目工程中通过Log.d()和Log.v()打印的 debug 和 verbose 级别的日志,甚是奇怪,通过 debug 模式断点调试也没 ...
- MySQL基础(4) | 视图
MySQL基础(4) | 视图 基本语法 1.创建 CREATE VIEW <视图名> AS <SELECT语句> 语法说明如下. <视图名>:指定视图的名称.该名 ...
- hadoop之HDFS核心类Filesystem的使用
1.导入jar包,要使用hadoop的HDFS就要导入hadoop-2.7.7\share\hadoop\common下的3个jar包和lib下的依赖包.hadoop-2.7.7\share\hado ...
- Nginx架构分析(20200202)
Nginx模块化 Nginx基于模块化设计,每个模块是一个功能实现,分布式开发,团队协作 核心模块.标准HTTP模块.可选HTTP模块.邮件模块.第三方模块 编译后的源码目录objs/ngx_modu ...
- webstorm 添加代码模板
file>setting>Live Templates>选择文件类型
- BUUCTF 部分wp
目录 Buuctf crypto 0x01传感器 提示是曼联,猜测为曼彻斯特密码 wp:https://www.xmsec.cc/manchester-encode/ cipher: 55555555 ...
- 洛谷新手题 P1028 数的计算题解
题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数nn): 先输入一个自然数nn(n \le 1000n≤1000),然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个 ...