django中图⽚的上传和显⽰
上传图⽚实际上是把图⽚存在服务器的硬盘中,将图⽚存储的路径存在数据库中。
1 ⾸先要配置⽂件上传的路径:
1.1 建⽴静态⽂件⽬录
在项⽬根⽬录下新建⼀个 static⽂件夹,下⾯再建⽴⼀个media⽂件夹,在media中建⽴⼀个与应⽤名相同的⽂件夹 static为静态⽂件⽬录,⾥⾯是各个引⽤的静态⽂件,包括js css 图⽚等等
static下⼀般分为 js css media 等
js css 和media 下⼀般都根据应⽤去建⽴多个⽂件夹,不同应⽤去⾃⼰的⽂件夹中
笔记本键盘清理我的⽬录是这样的:
我的应⽤模块是booktest
上传的图⽚都会保存到 static/media/booktest/中
1.2 配置静态路径
到项⽬下的settings.py⽂件中,配置静态⽂件路径
添加如下3个语句
1# Static files (CSS, JavaScript, Images)
2# docs.djangoproject/en/1.8/howto/static-files/
3
4 STATIC_URL = '/myStatic/'
5 STATICFILES_DIRS = [
6 os.path.join(BASE_DIR,'static'),
7 ]
8 MEDIA_ROOT=os.path.join(BASE_DIR,'static/media')
BASE_DIR代表整个项⽬的根⽬录
STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static'), ] 代表指定根⽬录下的static⽬录是静态⽂件⽬录
MEDIA_ROOT=os.path.join(BASE_DIR,'static/media') 代表上传⽂件的⽬录是static/media
STATIC_URL = '/myStatic/' 代表我们在编程的时候,⽤到静态路径的时候⽤/myStatic/ 来到静态⽂件的⽬录
2 建⽴⼀个数据库,⽤于存储上传的图⽚存在服务器的哪个路径下
在模型中建⽴图⽚的模型类并迁移
#上传图⽚的模型类
class Pictures(models.Model):
pic = models.ImageField(upload_to='booktest/')
def__str__(self):
return self.pic
迁移命令:
⽣成迁移⽂件: python manage.py makemigrations
执⾏迁移: python manage.py migrate
图⽚的上传:
1 ⽤户上传图⽚:
收楼验房1 前端的form表单input上传:
前端模板代码:
1<body>
2<form action="/upload/" method="post" enctype="multipart/form-data"> 3 {% csrf_token %}
4上传:
5<input type="file" name="picture">
6<input type="submit" value="上传">
7
8</form>
9
10
11</body>
2 url映射部分省略......
3 视图view的代码:
1# 上传图⽚
f import settings
3from .models import Pictures
4# 返回上传图⽚的页⾯
八月十五祝福语5def getUpload(request):
6return render(request,'booktest/upload.html')
7
8# 发来表单 实现上传功能
9def upload(request):
10# 从请求当中 获取⽂件对象
11 f1 = ('picture')
12# 利⽤模型类 将图⽚要存放的路径存到数据库中
13 p = Pictures()
14 p.pic = "booktest/" + f1.name
15 p.save()
16# 在之前配好的静态⽂件⽬录static/media/booktest 下新建⼀个空⽂件17# 然后我们循环把上传的图⽚写⼊到新建⽂件当中
18 fname = settings.MEDIA_ROOT + "/booktest/" + f1.name
19 with open(fname,'wb') as pic:
20for c in f1.chunks():
21 pic.write(c)
22return HttpResponse("上传成功")
这个时候我们在前段上传提交后,
在静态⽂件夹下多了⼀个图⽚⽂件
数据库中插⼊了⼀条信息,存储图⽚存放路径。
2 管理页⾯上传图⽚
电脑系统如何重装在前台申请 127.0.0.1:8000/admin登陆后上传图⽚
1 ⾸先在admin.py中注册⼀下上传图⽚的模型类
ib import admin
2from .models import Pictures
3# Register your models here.
4 ister(Pictures)
2 登陆 xxxx:8000/admin/ 登陆后看到我们的数据库表,点开直接上传就可以。
上传之后我们就能发现数据库多了⼀条数据,本地静态⽂件路径也多了⼀个图⽚。
创建管理账户的命令: python manage.py createsuperuser
图⽚的显⽰:
原理是从数据库中取到路径,然后再去路径⽂件,返回给前台模板
views视图中的代码:
1# 显⽰图⽚
2def show_pic(request):
3 pic_obj = (id=1)
4return render(request,'booktest/show_pic.html',{'pic_obj':pic_obj})
pic利⽤模型类取到id为1的图⽚对象,把这个图⽚对象送给模板
模板中代码:
1<body>
2<h1>显⽰图⽚</h1>
3
4<img src="/myStatic/media/{{ pic_obj.pic }}" alt="">
5</body>
pic_obj.pic:之前建⽴了模型类有⼀个pic属性是 ImageField类型,upload_to 指定了上传⽂件的⽬录
这⾥利⽤这个对象卡片制作
上海回力专卖店django⾃动帮我们去静态路径下取到图⽚对象放到前台。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论