Django之文件上传

亦凉 2022-03-11 08:38 295阅读 0赞

一、简单的文件(图片)上传
1、url

  1. urlpatterns = [
  2. url(r'^admin/', admin.site.urls),
  3. url(r'^upload/', views.Upload.as_view()),
  4. ]

2、views函数(这里用的CBV)

  1. from django.shortcuts import render, HttpResponse
  2. from django.views import View
  3. class Upload(View):
  4. def get(self, request):
  5. return render(request, 'upload.html')
  6. def post(self, request):
  7. user = request.POST.get('user')
  8. img = request.FILES.get('img')
  9. f = open(img.name, 'wb')
  10. for line in img.chunks():
  11. f.write(line)
  12. f.close()
  13. return HttpResponse('上传成功')

3、HTML

  1. <form action="/upload/" method="post" enctype="multipart/form-data">
  2. {% csrf_token %}
  3. <input type="text" name="user">
  4. <input type="file" name="img">
  5. <input type="submit" name="提交">
  6. </form>

二、自定义上传按钮
将“一”中的HTML改为

  1. <form action="/upload/" method="post" enctype="multipart/form-data">
  2. {% csrf_token %}
  3. <input type="text" name="user">
  4. <div style="position: relative">
  5. <a>上传</a>
  6. <input type="file" name="img" style="opacity: 0;position: absolute;top: 0;left: 0">
  7. </div>
  8. <input type="submit" name="提交">
  9. </form>

三、用Form组件上传
把“一”中的views改为

  1. from django.shortcuts import render, HttpResponse
  2. from django.views import View
  3. from django import forms
  4. from django.forms import fields
  5. class UploadForm(forms.Form):
  6. user = fields.CharField()
  7. img = fields.FileField()
  8. class Upload(View):
  9. def get(self, request):
  10. return render(request, 'upload.html')
  11. def post(self, request):
  12. obj = UploadForm(request.POST, request.FILES)
  13. if obj.is_valid():
  14. user = obj.cleaned_data['user']
  15. img = obj.cleaned_data['img']
  16. f = open(img.name, 'wb')
  17. for line in img.chunks():
  18. f.write(line)
  19. f.close()
  20. return HttpResponse('上传成功')

发表评论

表情:
评论列表 (有 0 条评论,295人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Django 文件

    在django开发网页中经常会遇到需要将本地的文件上传到服务器,这里我们就需要通过post请求将数据推送到服务器上去 1 ,定义视图 def upLoadP

    相关 django文件

    一、静态资源配置 什么是静态资源:css、js、images 需要从外部导入的资源 1.1创建static文件夹(通常放在根目录下) 1.2需要在setting