django1.8使用表單上傳檔案的實現方法,django1.8表單

來源:互聯網
上載者:User

django1.8使用表單上傳檔案的實現方法,django1.8表單

Python下有許多款不同的 Web 架構。Django是重量級選手中最有代表性的一位。許多成功的網站和APP都基於Django。

Django是一個開放原始碼的Web應用程式框架,由Python寫成。

在django中我們可以採用Form類來處理表單,通過執行個體化處理和在模板中渲染,就可以輕鬆完成表單的需求,採用django的表單處理方式,能幫我們省去很多的工作,比如驗證不可為空,或者要符合某種模式的輸入才有效,這些處理起來非常方便,不用自己再單獨寫代碼去驗證表單的資料正確性,所以在開發中比較常用,Form提供了很多表單欄位,比如日期,文本類型等,如果你熟悉基本的html,學起來會非常容易上手,所以今天我們不打算對每個表單的欄位進行逐一說明,今天只說下表單檔案的上傳,因為這個類型比較特殊,需要一點特殊的處理,我們來建立一個簡單的一個執行個體:

首先我們用Form建立一個簡單的表單:

class UserForm(forms.Form):username = forms.CharField(required=False)headImg = forms.FileField()class UserForm(forms.Form):username = forms.CharField(required=False)headImg = forms.FileField()

這個表單就2個欄位,要求使用者輸入使用者名稱和上傳一個檔案或圖片。

接下來我們放到模板中去渲染,這時候就可以看到一個基本表單了,視圖函數如下:

def register(request):if request.method == "POST":uf = UserForm(request.POST, request.FILES)if uf.is_valid():#放上傳檔案的代碼return HttpResponse('ok')else:uf = UserForm()return render(request, 'register.html', {'uf': uf})def register(request):if request.method == "POST":uf = UserForm(request.POST, request.FILES)if uf.is_valid():#放上傳檔案的代碼return HttpResponse('ok')else:uf = UserForm()return render(request, 'register.html', {'uf': uf})

這個函數判斷使用者的是否為POST請求,如果是並驗證是有效,然後就返回OK,在驗證正確和返回OK的中間放我們的上傳檔案代碼,因為只有檔案上傳成功能返回OK,我們一會說,如果是GET請求,就直接顯示一個空表單,讓使用者輸入。

處理上傳檔案就是往伺服器上產生一個檔案,並將上傳的檔案內容寫到新的檔案中,所以它的基本函數是這樣的,接收上傳檔案對象為參數,然後本地開啟一個檔案,從上傳的檔案中讀出檔案,寫入新的檔案中,代碼如下:

def handle_uploaded_file(f):with open('/server/testform/upload/' + f.name, 'wb+') as destination:for chunk in f.chunks():destination.write(chunk)def handle_uploaded_file(f):with open('/server/testform/upload/' + f.name, 'wb+') as destination:for chunk in f.chunks():destination.write(chunk)

有了這個上傳檔案的處理函數,我們就可以進一步完善我們的視圖函數裡,最終的代碼如下:

def register(request):if request.method == "POST":uf = UserForm(request.POST, request.FILES)if uf.is_valid():handle_uploaded_file(request.FILES['headImg'])return HttpResponse('ok')else:uf = UserForm()return render(request, 'register.html', {'uf': uf})def register(request):if request.method == "POST":uf = UserForm(request.POST, request.FILES)if uf.is_valid():handle_uploaded_file(request.FILES['headImg'])return HttpResponse('ok')else:uf = UserForm()return render(request, 'register.html', {'uf': uf})

這樣就完成了一個檔案的上傳,完畢。

以上所述是小編給大家介紹的django1.8使用表單上傳檔案,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對幫客之家網站的支援!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.