<p>首先定義一個(gè)包含姓名、郵箱和消息字段的ContactForm表單;2. 在視圖中通過(guò)判斷POST請(qǐng)求處理表單提交,驗(yàn)證通過(guò)後獲取cleaned_data並返迴響應(yīng),否則渲染空表單;3. 在模板中使用{{ form.as_p }}渲染字段並添加{% csrf_token %}防止CSRF攻擊;4. 配置URL路由將/contact/指向contact_view視圖;使用ModelForm可直接關(guān)聯(lián)模型實(shí)現(xiàn)數(shù)據(jù)保存,Django Forms實(shí)現(xiàn)了數(shù)據(jù)驗(yàn)證、HTML渲染與錯(cuò)誤提示的一體化處理,適合快速開發(fā)安全的表單功能。
<p>

<p>在Django 中,
forms
是處理用戶輸入的核心工具之一。它可以幫助你驗(yàn)證數(shù)據(jù)、渲染HTML 表單、處理錯(cuò)誤信息等。下面是一個(gè)實(shí)用的Django Forms 示例,涵蓋從定義表單到視圖和模板的完整流程。

<p>首先,在你的Django 應(yīng)用目錄下創(chuàng)建
forms.py
文件(如果還沒有):
# forms.py
from django import forms
class ContactForm(forms.Form):
name = forms.CharField(max_length=100, label='Your Name')
email = forms.EmailField(label='Email Address')
message = forms.CharField(widget=forms.Textarea, label='Message')
<p>這個(gè)表單包含三個(gè)字段:姓名、郵箱和消息內(nèi)容。

?? 2. 在視圖中使用表單(views.py)
<p>接下來(lái),在
views.py
中處理GET 和POST 請(qǐng)求:
# views.py
from django.shortcuts import render
from django.http import HttpResponse
from .forms import ContactForm
def contact_view(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
# 處理有效數(shù)據(jù)(例如發(fā)送郵件、保存到數(shù)據(jù)庫(kù)等)
name = form.cleaned_data['name']
email = form.cleaned_data['email']
message = form.cleaned_data['message']
# 這裡可以添加保存或發(fā)送邏輯return HttpResponse(f"Thanks {name}, we received your message!")
else:
form = ContactForm()
return render(request, 'contact.html', {'form': form})
<p>在
templates/contact.html
中渲染表單:

<!DOCTYPE html>
<html>
<head>
<title>Contact Us</title>
</head>
<body>
<h2>Contact Form</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Send</button>
</form>
</body>
</html>
-
{{ form.as_p }}
會(huì)自動(dòng)把每個(gè)字段用<p>
標(biāo)籤包裹輸出。 -
{% csrf_token %}
是Django 防止跨站請(qǐng)求偽造的必要標(biāo)籤。
? 4. 配置URL 路由(urls.py)
<p>確保你的應(yīng)用和項(xiàng)目都配置了正確的URL:
# urls.py (in your app)
from django.urls import path
from . import views
urlpatterns = [
path('contact/', views.contact_view, name='contact'),
]
<p>並在主項(xiàng)目的
urls.py
中包含它。
? 表單驗(yàn)證效果
- 如果用戶提交空表單或郵箱格式錯(cuò)誤,Django 會(huì)自動(dòng)顯示錯(cuò)誤信息。
- 所有驗(yàn)證由
forms.py
中定義的字段規(guī)則自動(dòng)完成。
<p>如果你希望表單直接對(duì)應(yīng)數(shù)據(jù)庫(kù)模型,可以用
ModelForm
:
# models.py
class Feedback(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
message = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
# forms.py
class FeedbackForm(forms.ModelForm):
class Meta:
model = Feedback
fields = ['name', 'email', 'message']
<p>然後在視圖中調(diào)用
form.save()
直接保存數(shù)據(jù)。
<p>基本上就這些。 Django Forms 的強(qiáng)大之處在於:
數(shù)據(jù)驗(yàn)證、HTML 渲染、錯(cuò)誤提示一體化處理,非常適合快速開發(fā)安全可靠的表單功能。
以上是python django形式示例的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!