当前位置: 首页 > news >正文

海阳网站制作龙华专业做网站

海阳网站制作,龙华专业做网站,云匠网兼职,廊坊百度快速排名在django中实现文件上传有三种方法可以实现#xff1a; 自己手动写使用Form组件使用ModelForm组件 其中使用ModelForm组件实现是最简单的。 1、自己手写 先写一个上传的页面 upload_file.html enctypemultipart/form-data 一定要加这个#xff0c;不然只会上传文件名…在django中实现文件上传有三种方法可以实现 自己手动写使用Form组件使用ModelForm组件 其中使用ModelForm组件实现是最简单的。 1、自己手写 先写一个上传的页面 upload_file.html enctypemultipart/form-data 一定要加这个不然只会上传文件名不会上传文件内容。 {% extends layout.html %}{% block content %}div classcontainerform methodpost enctypemultipart/form-data{% csrf_token %}input typetext nameusernameinput typefile nameavatarinput typesubmit value提交/form/div{% endblock %}在写一个视图函数 在这个视图函数中如果是get 请求就展示上传的页面如果是post 请求就将获取到的文件对象在项目跟目录创建一个相同的文件名保存起来。 from django.shortcuts import render, HttpResponsedef upload_list(request):if request.method GET:return render(request,upload_file.html)print(request.POST) # 请求体中的数据print(request.FILES) # 请求发过来的文件 {}file_object request.FILES.get(avatar)f open(file_object.name,modewb)for chunk in file_object.chunks():f.write(chunk)f.close()return HttpResponse(上传成功)简单的页面效果 2、使用Form组件 提交页面时 用户输入数据 文件输入不能为空报错 Form生成HTML标签 typefile表单的验证form.cleaned_data 获取数据 文件对象 将上传的图片保存到static目录并且在数据库保存文件存储的路径 models.py 中创建一个数据库 class Boss(models.Model):保存图片name models.CharField(verbose_name姓名,max_length32)age models.IntegerField(verbose_name年龄)img models.CharField(verbose_name图片,max_length128)视图函数 from django.shortcuts import render, HttpResponse from django import forms import os from app01 import modelsclass UpForm(forms.Form):name forms.CharField(label姓名)age forms.IntegerField(label年龄)img forms.FileField(label头像)def upload_form(request):if request.method GET:form UpForm()return render(request,upload_form.html,{form:form})form UpForm(datarequest.POST,filesrequest.FILES)if form.is_valid():# 1、读取图片内容写入文件夹中并获取文件的路径image_object form.cleaned_data.get(img)# 创建文件路径db_file_path os.path.join(static,img,image_object.name)file_path os.path.join(app01,db_file_path)f open(file_path,modewb)for chunk in image_object.chunks():f.write(chunk)f.close()# 2、 将图片文件路径写入到数据库models.Boss.objects.create(nameform.cleaned_data[name],age form.cleaned_data[age],img db_file_path,)return HttpResponse(上传成功)return render(request,upload_form.html,{form:form})upload_form.html 文件内容 {% extends layout.html %}{% block content %}div classcontainerdiv classpanel panel-defaultdiv classpanel-heading图片上传/divdiv classpanel-bodyform methodpost enctypemultipart/form-data novalidate{% csrf_token %}{% for field in form %}div classform-grouplabel {{ field.label }}/label{{ field }}span stylecolor:red{{ field.errors.0 }}/span/div{% endfor %}button typesubmit classbtn btn-primary提交/button/form/div/div/div {% endblock %}页面效果 3、使用ModelForm组件 使用ModelForm的前提条件要设置好media 目录 启用media 目录 在django的开发中有两个特殊的文件夹 static , 存放静态文件的路径包括 css、js 、项目图片。media , 用户上传的数据目录。 1、在urls.py中的配置 from django.urls import path,re_path from django.views.static import serve from django.conf import settingsurlpatterns [re_path(r^media/(?Ppath.*)$, serve, {document_root:settings.MEDIA_ROOT},namemedia),]2、在settings.py中配置 import osMEDIA_ROOT os.path.join(BASE_DIR,media) MEDIA_URL /media/ models.py 重新创建一个表来存储文件路径 class City(models.Model):城市name models.CharField(verbose_name名称,max_length32)count models.IntegerField(verbose_name人口)# 本质上数据库也是charField ,自动保存数据upload_to 表示会保存到media目录下的cityimg models.FileField(verbose_nameLogo,max_length128,upload_tocity/)视图函数 通过 form.save() django 自动将文件存储到media目录下的city目录并且把文件路径保存到数据库 from django.shortcuts import render, HttpResponse from app01 import models from app01.utils.bootstrap import BootStrapModelFormclass UploadModelForm(BootStrapModelForm):bootstrap_exclude_name [img]class Meta:model models.Cityfields __all__def upload_modelform(request):if request.method GET:form UploadModelForm()return render(request,upload_form.html,{form:form})form UploadModelForm(datarequest.POST,filesrequest.FILES)if form.is_valid():form.save()return HttpResponse(上传成功)return render(request, upload_form.html, {form: form})upload_form.html {% extends layout.html %}{% block content %}div classcontainerdiv classpanel panel-defaultdiv classpanel-heading图片上传/divdiv classpanel-bodyform methodpost enctypemultipart/form-data novalidate{% csrf_token %}{% for field in form %}div classform-grouplabel {{ field.label }}/label{{ field }}span stylecolor:red{{ field.errors.0 }}/span/div{% endfor %}button typesubmit classbtn btn-primary提交/button/form/div/div/div {% endblock %}效果 数据库存储的
http://www.w-s-a.com/news/606434/

相关文章:

  • 网站防站做网站吉林
  • 嘉定区网站建设公司企业信息公示查询系统官网
  • 一个具体网站的seo优化产品介绍网站模板下载地址
  • 怎么做网站在网上能搜到你哈尔滨网站建立公司
  • 做家旅游的视频网站上海百度公司总部
  • 微信小程序公司网站怎么制作区块链平台定制开发
  • 网站资质优化ip地址域名解析
  • 如何搭建个人网站ps做网站首页怎么运用起来
  • 中小企业商务网站建设wordpress 安全加固
  • asp网站开发设计文档php建设网站怎么用
  • 服装公司网站建设需求分析报告seo搜索引擎优化实战
  • wordpress 扒站最近最新新闻
  • 手机wap网站开发与设计wordpress域名无法访问
  • 百度收录网站收费吗做网站用vs还是dw
  • 维度网络专业做网站嘉兴网站建设方案服务
  • 成品电影网站建设中国最顶尖设计师
  • 网站建设报价清单明细视频网站如何做营销
  • 建设农业网站的论文做国外网站有哪些
  • 怎么做网页 网站制作张家港网站制作哪家好
  • 创世网站建设公司书籍封面设计网站
  • 国外优秀网站设计欣赏小程序推广赚佣金
  • 徐州人才网官方网站邯郸seo优化公司
  • 海南响应式网站建设哪里好瑞安电影城网站建设
  • wordpress widgetkit济南优化网站厂家
  • 麦片网站建设佛山短视频推广渠道
  • 免费自助建网站销售的网络建设
  • 传媒大气的网站网站怎么做分类聚合
  • 网站可以自己备案吗crm系统架构图
  • 罗湖网站建设58做网站的公司盐城
  • 网站开发答辩想要去网站做友情链接怎么发邮件