Nelle applicazioni reali, se utilizzo un framework di moduli, inevitabilmente finisco per combatterlo ad un certo punto.Schema di progettazione più pulito per la visualizzazione dei dati del modulo e degli errori di convalida?
Sono interessato ai modelli di best practice per la creazione di moduli in un sito Web. Il riferimento alle implementazioni in qualsiasi lingua sarebbe un bonus (di solito lavoro in Python). Sono particolarmente interessato al problema della creazione/visualizzazione dei moduli all'utente finale.
Ecco come vedo il soggetto. La maggior parte delle parti del flusso di lavoro del modulo può essere gestita con componenti relativamente leggeri che posso estrarre da framework come formencode e formish. Per "gran parte delle parti" intendo la decodifica inoltrata in una struttura dati sensata (ad esempio campi ripetuti nel modulo dovrebbero diventare elenchi in Python); marshalling i valori nei tipi che vogliamo (ad esempio, un campo "età" dovrebbe diventare un numero intero); e convalida i valori (ad esempio "età non deve essere vuota").
Il pezzo che finisco per combattere è creare e visualizzare i moduli stessi. Molti framework (ad esempio FormAlchemy) accoppiano strettamente i loro schemi, convalide e modelli a un qualche tipo di schema di generazione di widget di moduli, che non mi piace.
Le attività coinvolte nella realizzazione di un modulo sono:
- Fare widget dinamici (ad esempio un elenco di selezione con i valori da un database)
- Looping oltre fieldsets ripetizione (ad esempio un elenco di nome, coppie di età che rappresentano ciascuno una persona)
- Incorporare valori esistenti nei campi di modulo (da una struttura dati)
- Visualizzazione errori di convalida prossimi ai campi modulo o nella parte superiore della pagina
Le opzioni che vedo per fare questo sono:
- generare, sulla base di widget che sono definite nello schema (ad esempio Django)
- post-processo forme, mediante l'applicazione di una struttura di dati contenente errori e valori per un modello HTML (ad es htmlfill)
- accettano che per tutti, ma i casi più semplici, si può anche cominciare dall'inizio da codifica la logica (loop, visualizzazione errore, ecc) manualmente in ciascuno dei vostri modelli di modulo
ci sono altri modelli per la gestione del problema? Quali sono i pro ed i contro di ognuno?
I quadri (Python) Ho guardato/aveva sottolineato finora sono: flatland, formencode, FormAlchemy, formish, WTForms, Django forme, web2py, deform, FormConvert e web.py
Aggiornamento : Non ho davvero avuto molto tempo per rispondere alla domanda sulle migliori pratiche per la creazione di moduli, ma ho preso la decisione con il mio progetto corrente di deformare/scolapasta, che è un modo sensato di gestire la serializzazione, ecc. più importante è ben documentato e ben collaudato. Eviterò la generazione di moduli per tutti, tranne le forme più semplici.
Grazie per avermi fatto questa domanda come hai fatto tu. I miei requisiti sono quasi identici ai tuoi. In base al tuo aggiornamento, hai abbandonato la generazione di moduli. Ma per quanto riguarda il popolamento di forme con valori, sei riuscito a trovare una buona soluzione? Ad esempio, stai usando htmlfill per questo scopo? Grazie – adowds