1 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
Django forms使用容易, 又方便擴(kuò)展, 因此Django admin和CBVs基本都基于forms使用. 事實(shí)上, 由于django forms的強(qiáng)大驗(yàn)證功能, 大多數(shù)Django API 框架都是用forms作為其驗(yàn)證的一部分.
雖然django forms的學(xué)習(xí)需要花費(fèi)一點(diǎn)時(shí)間, 但如果將forms, models和views結(jié)合起來(lái)使用, 我們可以花費(fèi)很少的經(jīng)歷來(lái)完成龐大的工作.
1. Django Forms的強(qiáng)大之處
有些django項(xiàng)目并不直接呈現(xiàn)HTML, 二是以API框架的形式存在, 但你可能沒(méi)有想到, 在這些API形式的django項(xiàng)目中也用到了django forms. django forms不僅僅是用來(lái)呈現(xiàn)HTML的, 他們最強(qiáng)的地方應(yīng)該是他們的驗(yàn)證能力. 下面我們就介紹幾種和Django forms結(jié)合使用的模式:
2. 模式一: ModelForm和默認(rèn)驗(yàn)證
最簡(jiǎn)單的使用模式便是ModelForm和model中定義的默認(rèn)驗(yàn)證方式的組合:
# myapp/views.py
from django.views.generic import CreateView, UpdateView
from braces.views import LoginRequiredMixin
from .models import Article
class ArticleCreateView(LoginRequiredMixin, CreateView):
model = Article
fields = ('title', 'slug', 'review_num')
class ArticleUpdateView(LoginRequiredMixin, UpdateView):
model = Article
fields = ('title', 'slug', 'review_num')
正如以上代碼中看到的一樣:
ArticleCreateView和ArticleUpdateView中設(shè)置model為Article
兩個(gè)view都基于Article model自動(dòng)生成了ModelForm
這些ModelForm的驗(yàn)證, 是基于Article model中定義的field轉(zhuǎn)換而來(lái)的
3. 模式二, 在ModelForm中修改驗(yàn)證
- 1 回答
- 0 關(guān)注
- 602 瀏覽
添加回答
舉報(bào)