In un nuovo progetto Django, mi chiedo solo se utilizzare le viste basate sulle classi (CBV) o le viste basate sulle funzioni (FBV).In un nuovo progetto Django, dovrei utilizzare le visualizzazioni basate su classi o su funzioni?
Secondo Django's documentation:
vista basato sulla classe forniscono un modo alternativo per implementare viste come oggetti Python invece di funzioni. Non sostituiscono vista basati su funzioni, ma hanno alcune differenze ei vantaggi rispetto alle viste basati su funzioni
che sembra contraddire a Python Zen 'C'è un solo modo per farlo'
Così , che è il modo migliore?
Finora, vedo solo tre possibilità:
sempre utilizzando FBV
Il che significa non utilizzando le visualizzazioni generiche a tutti (come quelli sono di classe a base dal 1,5)
Sempre usando CBV:
Che ha determinati problemi con la determinazione degli ordini di elaborazione delle richieste. Vedi
http://lukeplant.me.uk/blog/posts/djangos-cbvs-were-a-mistake/
Penso anche che la costruzione della gerarchia di classi insieme non è un bene per la performance. In tal caso mi chiederei anche io, perché gli FBV non sono ancora deprecati?
Mettere generico CBV in FBV, secondo
https://gist.github.com/spookylukey/2596285
che si traduce in un sacco di codice crudele boilerplate
Vedete altri modi, o qualcuno sa dove i punti di vista stanno andando?
"qualcuno sa dove stanno andando le visualizzazioni" - questa domanda non è per SO, è per lo sviluppo di mailing list/IRC. –
Dovresti usare quello che ha più senso per il tuo progetto. Dirò che le viste basate sulla funzione * generica saranno obsolete; ma le viste basate sulla funzione risolvono un problema diverso rispetto alle viste basate sulla classe. –
@GeorgeStocker: Non è una contraddizione dire 'usare quello che ha più senso per il tuo progetto [...] Dirò che i wiev generici basati su funzioni saranno obsoleti'? Quindi, se l'FBV sarà obsoleto, non dovrei usarli? Nella maggior parte dei casi, sia fbv che cbv stanno affrontando lo stesso problema, non sarebbe unpythonic offrire sia uguale che usare entrambi in un progetto? – ProfHase85