在Django中,可以通過以下步驟實現表單:
創建一個繼承自forms.Form
的表單類。在表單類中,定義需要的字段,并為每個字段設置相關的驗證規則。
在視圖函數或類中,創建表單的實例,并將其傳遞給模板。
在模板中,使用{{ form }}
模板標簽渲染整個表單或使用{{ form.field_name }}
渲染單個字段。
在視圖函數或類中,處理表單的提交邏輯。可以使用request.method
判斷請求的方法是GET還是POST,若是POST,則調用表單實例的is_valid()
方法進行驗證,獲取表單數據,然后進行相應的處理。
下面是一個示例代碼:
在forms.py
文件中定義表單類:
from django import forms
class MyForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
在視圖函數中處理表單的提交:
from django.shortcuts import render
from .forms import MyForm
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']
# 處理表單數據
else:
form = MyForm()
return render(request, 'my_template.html', {'form': form})
在模板中渲染表單:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
在上述代碼中,MyForm
是自定義的表單類,其中包含了name
和email
兩個字段。在視圖函數my_view
中,通過判斷請求的方法來處理表單的提交邏輯。若是GET請求,則創建一個空的表單實例;若是POST請求,則根據POST數據創建表單實例,并進行驗證。最后,通過render
函數將表單實例傳遞給模板進行渲染。模板中使用form.as_p
將表單渲染為p標簽的形式,并添加了CSRF保護。