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})
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})