使用表單
官方位址:https://docs.djangoproject.com/zh-hans/4.1/topics/forms/
這個頁面是Django官方文檔中關于表單的介紹部分。表單是一種用于收集使用者輸入資料的HTML表單,通常包含文本框、下拉清單、單選按鈕等控件。
在Django 4中,你可以使用以下類和方法來處理表單:
- forms.Form:這是一個基類,用于建立自定義表單類。你可以繼承這個類并添加自己的字段和驗證規則。
- forms.ModelForm:這是一個特殊的表單類,用于從資料庫模型自動生成表單。你可以将這個類用作資料導入或導出的工具。
- forms.formset_factory:這個函數用于建立一個表單集(formset),它允許你在一個頁面上顯示多個相同類型的表單。
- form.is_valid():這個方法用于檢查表單是否通過所有驗證規則。如果表單有效,它将傳回True,否則傳回False。
- form.cleaned_data:這個屬性包含了表單中所有已清理的資料,即已經通過驗證的資料。
要學習和應用表單,你可以參考Django官方文檔中的教程和示例代碼。例如,要建立一個簡單的系統資料庫單,你可以按照以下步驟操作:
- 在你的Django項目中建立一個新的應用,例如叫做myapp。
- 在myapp目錄下建立一個名為forms.py的檔案,并在其中編寫以下代碼:
from django import forms
class RegistrationForm(forms.Form):
username = forms.CharField(max_length=100)
email = forms.EmailField()
password = forms.CharField(widget=forms.PasswordInput)
這個表單類定義了三個字段:使用者名、電子郵件和密碼。其中,密碼字段使用了密碼輸入控件來保護使用者的隐私。
- 在myapp目錄下建立一個名為views.py的檔案,并在其中編寫以下代碼:
from django.shortcuts import render, redirect
from .forms import RegistrationForm
def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
# 這裡可以儲存使用者資訊到資料庫中
return redirect('home')
else:
form = RegistrationForm()
return render(request, 'register.html', {'form': form})
這個視圖函數會處理使用者送出的系統資料庫單,驗證表單資料是否有效,如果有效則儲存使用者資訊到資料庫中并重定向到首頁。如果表單無效,則重新渲染表單頁面。
- 在myapp目錄下建立一個名為templates的目錄,并在其中建立一個名為register.html的檔案,并在其中編寫以下代碼:
{% extends "base.html" %}
{% block content %}
<h2>Register</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Register</button>
</form>
{% endblock %}
這個模闆檔案定義了一個簡單的系統資料庫單,包含使用者名、電子郵件和密碼三個字段以及一個送出按鈕。使用{{ form.as_p }}可以将表單渲染為一組帶有标簽和錯誤資訊的段落。
- 在項目的主urls.py檔案中,将新建立的視圖函數添加到URL配置中:
from django.urls import path
from myapp.views import register
urlpatterns = [
# ...
path('register/', register, name='register'),
# ...
]
對Django4的表單進行翻譯:
表單
Django的表單是用于建立HTML表單的強大工具。它們允許我們從使用者那裡收集資料,并将其發送到伺服器進行處理。
表單的基礎
在Django中建立表單的最簡單方法是使用Form類。通過繼承Form類并定義表單字段,我們可以定義一個自定義的表單。
以下是一個簡單的表單示例:
from django import forms
class MyForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
在上面的示例中,我們建立了一個名為MyForm的表單,并定義了三個字段:name、email和message。每個字段都是一個執行個體化的表單字段類,它們具有不同的屬性,如max_length和widget。
我們可以在視圖函數中使用這個表單,并将它渲染為HTML表單:
from django.shortcuts import render
def my_view(request):
form = MyForm()
return render(request, 'my_template.html', {'form': form})
在上面的代碼中,我們執行個體化了MyForm類,并将其傳遞給模闆,以便在HTML頁面中渲染表單。
表單的驗證
Django的表單不僅可以用于渲染HTML表單,還可以用于驗證使用者輸入的資料。在表單執行個體上調用is_valid()方法可以驗證使用者送出的資料是否有效。
以下是一個驗證表單的示例:
def my_view(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
# 處理有效的表單資料
name = form.cleaned_data['name']
email = form.cleaned_data['email']
message = form.cleaned_data['message']
# 進一步處理資料...
else:
form = MyForm()
return render(request, 'my_template.html', {'form': form})
在上面的示例中,我們首先檢查請求的方法是否為POST。如果是POST請求,我們執行個體化MyForm類,并将使用者送出的資料作為參數傳遞給表單。然後我們調用is_valid()方法來驗證表單資料。如果表單資料有效,我們可以通過cleaned_data屬性通路經過清洗的資料。
表單的渲染
Django的表單可以自動渲染為HTML表單元素。在模闆中,我們可以使用{{ form }}模闆變量來渲染整個表單,或者使用{{ form.field_name }}來渲染單個字段。
以下是一個使用Django模闆渲染表單的示例:
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">送出</button>
</form>
在上面的示例中,我們使用{{ form.as_p }}來渲染整個表單。這将以段落的形式渲染每個字段,并自動包含CSRF令牌。
類、函數和方法
Django的表單庫提供了許多類、函數和方法,用于建立、處理和驗證表單。以下是一些常用的類、函數和方法:
- Form類:用于建立自定義表單的基類。
- CharField類:用于建立文本輸入字段。
- EmailField類:用于建立電子郵件輸入字段。
- TextArea類:用于建立多行文本輸入字段。
- cleaned_data屬性:用于通路經過清洗的表單資料。
- is_valid()方法:用于驗證表單資料是否有效。
- render()函數:用于渲染表單為HTML元素。
以上隻是一些基本的類、函數和方法,Django的表單庫還提供了許多其他功能和選項,可以根據需要進行學習和應用。
希望這個簡單的介紹能幫助你了解和使用Django4中的表單。通過繼續學習和實踐,你将能夠更好地掌握表單的使用,并在實際項目中應用它們。