1.from表单上传文件
知识点补充: 1.发送文件 : form 必须加入enctype="multipart/form-data"
2.上传文件标签: <input type="file" name="img" >
3.在前段通过form 传过来的值为可迭代对象
4.
创建url
from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^upload.html$', views.upload), ]
增加view
from django.shortcuts import render from django.shortcuts import HttpResponse # Create your views here. from app01 import models def upload(request): if request.method=="GET": return render(request,'upload.html') else: user=request.POST.get('user') img=request.FILES.get('img') print(img.name) print(img.size) #img 有大小 名字等 '''写入文件''' f=open(img.name,'wb') for line in img.chunks(): #img.chunks()为可迭代对象 f.write(line) f.close() return HttpResponse('.........')
写一个html
制定上传图标:
1.调制上传 input 标签的透明度
2.设置 position位置: position: absolute; top: 0;left: 0
3.在input上方加入一个标签,引入Bootstrap,调制样式 例如: <a class="glyphicon glyphicon-plane">上传</a>
4.把a标签,和input标签加入一个div标签 给div设置 ------>"position: relative"
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css"> </head> <body> <form action="upload.html" method="POST" enctype="multipart/form-data"> {% csrf_token %} <input type="text" name="user" /> <div style="position: relative"> <a class="glyphicon glyphicon-plane">上传</a> <input type="file" name="img" style="opacity: 0; position: absolute; top: 0;left: 0 "/> </div> <input type="submit" value="提交"> </form> </body> <script src="/static/jquery-3.1.1.js"></script> <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.js"></script> </html>
form表单加入验证:
view
from django.shortcuts import render from django.shortcuts import HttpResponse # Create your views here. from django import forms from django.forms import fields class Uploadform(forms.Form): user=fields.CharField( max_length=32, required=True, ) img=fields.FileField() from app01 import models def upload(request): if request.method=="GET": return render(request,'upload.html') else: obj=Uploadform(request.POST,request.FILES) if obj.is_valid(): user=obj.cleaned_data['user'] img=obj.cleaned_data['img'] f=open(img.name,'wb') for line in img.chunks(): f.write(line) f.close() return HttpResponse('.........')