django可以幫助我們創建表單,并完成大部分的處理工作。
django中的Form組件有以下幾個功能:
1. 自動生成HTML表單元素
2. 檢查表單數據的合法性
3. 如果驗證錯誤,重新顯示表單(數據不會重置)
4. 數據類型轉換(字符類型的數據轉換成相應的Python類型)
## 創建表單
form表單繼承 `django.forms` 下的 `Form` 類
```python
from django import forms
class BookForm(forms.Form):
title = forms.CharField(label="書名", required=True, max_length=20)
date = forms.DateField(label="創建日期", required=True)
```
## 前端顯示
使用表單自動生成HTML表單元素,只需要創建表單類的對象,并返回即可
```python
class Books(View):
def get(self, request):
form = BookForm()
context = {'form': form}
return render(request, 'index.html', context)
def post(self):
pass
```
在模板中使用表單也很簡單,把后端返回的表單類對象直接寫入 `<form>` 標簽即可。
```HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post">
{% csrf_token %}
{{ form }}
<input type="submit">
</form>
</body>
</html>
```
- csrf_token 添加CSRF防護的字段
訪問視圖函數,可以看到我們創建好的表單

## 獲取數據
```python
class Books(View):
def get(self, request):
form = BookForm()
context = {'form': form}
return render(request, 'index.html', context)
def post(self, request):
form = BookForm(request.POST)
if form.is_valid():
print(form.cleaned_data)
return HttpResponse("成功")
else:
context = {'form': form}
return render(request, 'index.html', context)
```
- is_valid() 驗證數據合法性
- cleaned_data 取出所有數據
## ModelForm
當表單數據和模型類中的數據一樣時,我們可以使用 `ModelForm` 快速創建表單
```python
from book.models import Book
class BookForm(forms.ModelForm):
class Meta:
model = Book
fields = ('b_title', 'b_pub_date')
```
- modle 指定模型類
- fields 指定要添加到表單中的字段
- 1.介紹
- 2.工程搭建
- 2.1.環境配置
- 2.2.創建工程
- 2.3.創建子應用
- 2.3.1.pycharm打開項目
- 2.4.創建視圖
- 3.基本配置
- 3.1.settings基本配置項
- 3.2.路由配置
- 4.請求響應
- 4.1.request
- 4.2.response
- 4.3.cookie
- 4.4.session
- 5.類視圖中間件
- 5.1.類視圖
- 5.2中間件
- 6.數據庫
- 6.1.數據庫配置
- 6.2定義模型類
- 6.3數據庫遷移
- 6.4數據庫操作
- 6.5查詢集
- 6.6模型管理器
- 7.模板表單
- 7.1使用模板
- 7.2模板標簽
- 7.3表單
- 8.后臺管理
- 8.1Admin
- 8.2自定義模型類樣式
- 8.3列表頁