Django---form表單提交文件


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('.........')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM