Django 上传图片操作

5 篇文章 0 订阅
2 篇文章 0 订阅

Django上传图片

  • 在admin中上传图片
  • 在admin.py文件中注册,PicTest
from django.contrib import admin
from booktest.models import *

admin.site.register(PicTest)
  • 在admin创建管理员账户
# create super user
python manage.py createsuperuser
  • 在settings中修改配置文件
STATIC_URL = '/static/'

MEDIA_ROOT=os.path.join(BASE_DIR,"static/upImg")
  • 在models.py中创建数据模型
from django.db import models

# Create your models here.

class PicTest(models.Model):
pic = models.ImageField(upload_to='path') # 参数 upload_to 路径重复的话会重新打开文件

自定义文件上传

  • 文件上传时,文件数据储存在request.FILES属性中

  • form表单要上传文件需要添加属性 enctype=“multipart/form-data”

  • 上传文件必须是post请求

  • settings.py部分

# 添加路径
MEDIA_ROOT=os.path.join(BASE_DIR,"static/upfile")
  • views.py部分
from django.shortcuts import render,HttpResponse

# Create your views here.

def upfile(request):
return render(request,'upfile.html')

import os
from django.conf import settings

def savefile(request):
if request.method == 'POST':
f = request.FILES['file'] # input 框name 属性
# 文件在服务器客户端的路径
filePath = os.path.join(settings.MEDIA_ROOT,f.name)
with open(filePath,'wb') as fp:
for info in f.chunks():
fp.write(info)
return HttpResponse('上传成功')
else:
return HttpResponse('上传失败')
  • 网页部分

  • {% csrf_token %}作用

    • django 第一次响应来自某个客户端的请求时,会在服务器端随机生成一个 token,把这个 token 放在 cookie 里。然后每次 POST 请求都会带上这个 token,如果注释会报错“CSRF验证失败. 请求被中断.”
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>自定义上传文件</title>
</head>
<body>
{# method=post 添加属性 enctype="multipart/form-data" #}
<form method="post" action="/savefile/" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file" /> <br>
<input type="submit" value="上传">

</form>

</body>
</html>

在admin中上传,Django框架会自动验证是不是图片格式。自定义的上传需要自己验证上传的文件格式是不是图片,验证图片格式会后续补充,路由部分请自行补充

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Django网页显示上传图片,可以按照以下步骤操作: 1. 在Django中创建一个视图函数,用来处理图片上传和显示。 2. 在Django的urls.py文件中,将该视图函数的URL路径映射到一个URL。 3. 在HTML模板中,添加一个表单,用于上传图片。 4. 在该表单中,指定表单的enctype属性为"multipart/form-data",这样才能上传文件。 5. 在表单中添加一个input元素,type属性为"file",表示上传文件的输入框。 6. 在视图函数中,获取上传的图片,并将其保存到服务器的某个文件夹中。 7. 在HTML模板中,将图片的URL路径插入到img标签的src属性中,从而实现图片的显示。 下面是一个简单的Django视图函数代码示例: ```python from django.shortcuts import render from django.conf import settings from django.core.files.storage import FileSystemStorage def upload(request): if request.method == 'POST' and request.FILES['image']: image = request.FILES['image'] fs = FileSystemStorage() filename = fs.save(image.name, image) uploaded_file_url = fs.url(filename) return render(request, 'upload.html', {'uploaded_file_url': uploaded_file_url}) return render(request, 'upload.html') ``` 在上面的代码中,我们首先判断请求的方法是否为POST,并且是否包含名为"image"的文件。如果是,则将文件保存到服务器上的某个文件夹中,并将其URL路径传递给模板渲染。如果不是,则直接渲染上传页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值