django 表單使用

Django提供對錶單處理的支持,能夠簡化並自動化大部分的表單處理工做。html

1 定義表單類

表單系統的核心部分是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

2 視圖中使用表單類

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}) 
  • form.is_valid() 驗證表單數據的合法性
  • form.cleaned_data 驗證經過的表單數據

3 模板中使用表單類

<!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> 
  • csrf_token 用於添加CSRF防禦的字段
  • form 快速渲染表單字段的方法

4 模型類表單

若是表單中的數據與模型類對應,能夠經過繼承forms.ModelForm更快速的建立表單。spa

class BookForm(forms.ModelForm): class Meta: model = BookInfo fields = ('btitle', 'bpub_date') 
  • model 指明從屬於哪一個模型類
  • fields 指明向表單中添加模型類的哪一個字段
相關文章
相關標籤/搜索