Django后台获取前端post上传的文件方法
今天无聊就来写写django后台上传文件的方法
准备工作
django-admin startproject uploadimg
新建django项目
cd uploadimg
进入自己创建的项目,然后django-admin startapp index
创建app,名字index
在项目根目录下创建一个静态文件夹
pubstatic
,等会上传的文件就保存到这里
修改
settings.py
文件,因为这次,只涉及上传图片到django后台,就只设置这几项
- 1.第一步当然是注册app咯~
- 2.设置模板路径
- 3.设置静态文件路径,
STATICFILES_DIRS
,这个就是为了查找静态文件,上面那个STATIC_URL = '/static/'
这个本来就存在,它会自动到上面注册好的app下进行查看static
静态文件夹
到这,对于这次的博客配置基本结束
URL改写
在
uploadimg
文件夹下的urls.py
进行配置,path('',include('index.urls'))
,URL为空,将URL分发给index的urls.py
处理
所以,我们要在
index
下创建urls.py
文件,因为本来是不存在的,然后进行简单的代码
第一个
upload.html
就是简单的展示界面,展示一个form表单,views.py
文件中index
函数
1 | from django.shortcuts import render |
form.html html文件代码基本如下,注意在
form
表单的定义中一定要加上enctype= “multipart/form-data"
属性,否则后台可能会取不到文件
1 | {% load static %} #这个为了能够调用静态文件 |
上面那个form表单
action
就是跳转到uploadimg,index
下的urls.py
就接受这个url,调用ChangImg
函数
1 | from django.shortcuts import render |
当我们获取到图片img后,可以通过
image=request.FILES.get(‘images’)去获取到该图片
image.name 获取到图片的名字
image.size获取到图片的大小
image.read()可以获取图片内容
通过
default_storage.save(save_path,ContentFile(image.read()))
把图片缓存到指定文件,save_path就是前面构造的存储路径,如果不存在路径会自动创建
from django.conf import settings
import的settings
可以访问settings.py文件中的属性,STATICFILES_DIRS[0]
,就是前面设置的静态文件路径
成功截图
点击提交后,跳转到
uploadimg
url,接受后,调用ChangeImg
函数,request.FILES.get('images')
获取图片,这个'images'
就是前面选图片的input
标签的name属性值。
获取图片后 ,调用
default_storage.save(save_path,ContentFile(image.read()))
保存图片
这次的博客就到这里了,So
Just have fun…