python测试开发django-110.ModelForm模型表单上传文件

前言

django开发页面上的文件上传功能

模型

models.py 设计数据模型,upload_to参数是指定文件上传的路径

# 作者-上海悠悠 QQ交流群:717225969 # blog地址 https://www.cnblogs.com/yoyoketang/ class Upfile(models.Model): """上传文件""" file = models.FileField(upload_to="upload") title = models.CharField(max_length=30) timestamp = models.DateTimeField(auto_now_add=True)

在setting中添加2个参数,文件上传到项目的media目录

MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

视图功能

post提交数据的时候,通过request.FILES 获取文件参数

from .models import Upfile from django.views import View from django import forms # 作者-上海悠悠 QQ交流群:717225969 # blog地址 https://www.cnblogs.com/yoyoketang/ class UpFileModelForm(forms.ModelForm): """上传文件""" class Meta: model = Upfile fields = ["file", "title"] class UpFileModelView(View): def get(self, request): form_obj = UpFileModelForm() return render(request, "upfile.html", locals()) def post(self, request): form_obj = UpFileModelForm(request.POST, request.FILES) if form_obj.is_valid(): f = form_obj.save() msg = "保存成功" return JsonResponse({"code": 0, "msg": "success", "data": "/media/"+str(f.file)}) else: msg = "参数不合法" return render(request, "upfile.html", locals())

模板

form表单需设置enctype="multipart/form-data"属性

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <body> <form action="" method="POST" id="detail-form" enctype="multipart/form-data"> {% csrf_token %} {% for field in form_obj %} <p> {{ field.label_tag }} {{ field }} {{ field.errors }} </p> {% endfor %} <p> {% if msg %} {{ msg }} {% endif %} </p> <p> <input type="submit" value="提交" > </p> </form> </body> </body> </html>

urls.py设置访问地址

from django.conf.urls import url from django.views.static import serve from . import settings urlpatterns = [ url('^upimage$', views.UpFileModelView.as_view()), url(r'^media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT}), ]

实现效果

访问页面

选择文件上传

上传成功返回

复制返回的图片地址,拼接请求可以访问上传的图片http://localhost:8000/media/upload/21_fyErshM.png

(0)

相关推荐

  • Django表单系统初体验

    WEB前端开发社区 今天每个 Web 站点上都需要有用户注册.登陆以及退出这些基本功能,有的站会稍微复杂点,比如让用户输入验证码来鉴别是否是机器人,当然这是后话.既然所有的 Web 站点都需要实现这项 ...

  • 选择一个 Python Web 框架:Django vs Flask vs Pyramid

    WEB前端开发社区 昨天 Pyramid, Django, 和 Flask都是优秀的框架,为项目选择其中的哪一个都是伤脑筋的事.我们将会用三种框架实现相同功能的应用来更容易的对比三者.也可以直接跳到框 ...

  • 基于 Django 的工单审批流实现

    一. 前言 今天小编给大家唠叨下工单审批流的那些事.在运维平台的建设,少不了工单审批工作流的实现,虽然已经存在大量基于python甚至是django封装好的库,而且非常方面,文档也相对齐全. 但封装好 ...

  • 前端教程:Django上传文件

    对于Web应用程序,以便能够上传文件(资料图片,歌曲,PDF格式,文字......),它通常是很有用的.让我们在这一节中来讨论如何使用Django上传文件. 上传图片 在开始开发图片上传之前,请确保P ...

  • python测试开发django-102.验证时form表单error_messages

    前言 form表单验证前端输入内容是否合法时,可以定义error_messages参数,用于前端页面展示错误信息 error_messages参数 LoginForm 表单添加 常用的error_me ...

  • (7条消息) curl post表单上传文件(C++)

    最近测试如何上传文件到服务器.原来传照片一致通过binary 形式传文件,或者把图片base64编码传图片.一致没有用form-data 表单形式发送数据,今天尝试下如何使用libcurl提供的API ...

  • python测试开发django-109.ModelForm模型表单的使用

    前言 django的表单有2种:forms.Form 和 forms.ModelForm.ModelForm顾名思义是将模型和表单结合起来,这个功能是非常强大的! Model模型 Model模型设计如 ...

  • python测试开发django -143.Bootstrap 表单控件校验状态

    前言 Bootstrap 对表单控件的校验状态,如 error.warning 和 success 状态,都定义了样式.使用时,添加 .has-warning..has-error 或 .has-su ...

  • python测试开发django -142.Bootstrap 表单(form)

    前言 HTML 表单用于收集不同类型的用户输入.boostrap中表单有几种样式 基本垂直表单 内联表单 form-inline 水平排列表单 form-horizontal 基本表单实例 单独的表单 ...

  • python测试开发django -140.Bootstrap 缩略图

    前言 网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 class .thumbnail 的& ...

  • python测试开发django -141.Bootstrap 面板(Panels)

    # 前言 面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 元素添加 class .panel 和 class .panel-default 即可 基础面板 不带标题的基本面 ...

  • python测试开发django -144.Ace Editor 在线编辑python代码

    前言 网页上想在线编辑代码,可以使用Ace Editor 在线编辑实现.比如我们想实现一个功能,在网页版上写python代码,能有python的语法自动补齐功能. Ace Editor 在线编辑 AC ...

  • python测试开发django-10.django连接mysql

    前言 Django 对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle.本篇以mysql为例简单介绍django连接mysql进行数据操作 Django连 ...