Django提供對錶單處理的支持,能夠簡化並自動化大部分的表單處理工做。html
表單系統的核心部分是Django 的Form類。 Django 的數據庫模型描述一個對象的邏輯結構、行爲以及展示給咱們的方式,與此相似,Form類描述一個表單並決定它如何工做和展示。python
假如咱們想在網頁中建立一個表單,用來獲取用戶想保存的圖書信息,可能相似的html 表單以下:數據庫
<form action="" method="post"> <input type="text" name="title"> <input type="date" name="pub_date"> <input type="submit"> </form>
咱們能夠據此來建立一個Form類來描述這個表單。django
新建一個forms.py文件,編寫Form類。post
from django import forms class BookForm(forms.Form): title = forms.CharField(label="書名", required=True, max_length=50) pub_date = forms.DateField(label='出版日期', required=True)
注:表單字段類型參考資料鏈接ui
from django.shortcuts import render from django.views.generic import View from django.http import HttpResponse from .forms import BookForm class BookView(View): def get(self, request): form = BookForm() return render(request, 'book.html', {'form': form}) def post(self, request): form = BookForm(request.POST) if form.is_valid(): # 驗證表單數據 print(form.cleaned_data) # 獲取驗證後的表單數據 return HttpResponse("OK") else: return render(request, 'book.html', {'form': form})
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>書籍</title> </head> <body> <form action="" method="post"> {% csrf_token %} {{ form }} <input type="submit"> </form> </body> </html>
若是表單中的數據與模型類對應,能夠經過繼承forms.ModelForm更快速的建立表單。spa
class BookForm(forms.ModelForm): class Meta: model = BookInfo fields = ('btitle', 'bpub_date')