2012-07-20 19 views
8

Soy nuevo en Django y Python y después de leer un montón decidí no utilizar funciones globales como puntos de vista (tal vez porque no estoy acostumbrado a las funciones globales, pero sobre todo porque quiero un mejor nivel de reutilización y prefieren tener bloques de código más pequeños) . El problema es que la mayoría de las aplicaciones de Django que he estado comprobando no usan un enfoque basado en clases.¿Las vistas basadas en clases son ampliamente utilizadas por la comunidad de Django?

¿Es este código porque yo soy el registro en los lugares equivocados (Empecé con el tutorial de Django y luego en github)?

Lo pregunto porque en el futuro espero poder trabajar con más programadores Django y no quiero adoptar un enfoque no estándar al principio.

+0

Aprende los dos, porque verás ambos. VBC utilizar cuando se puede y cuando tiene sentido que (si usted está escribiendo más de 100 líneas de código sólo para hacer el trabajo CBV, probablemente significa que sería más eficaz utilizar una vista basada en la función). Cuando los CBV funcionan, funcionan * bien *, y son muy superiores, pero hay límites para todo y, a veces, tiene más sentido usar una función. –

+0

@ChrisPratt gracias, estaba pensando en usar ambas estrategias. Mencionas escribir más de 100 líneas de código para hacer que funcione el CBV, y estoy de acuerdo, pero estaba pensando en escribir más de 100 líneas de código en una función de visualización. No tengo la experiencia con Django, pero el motor de plantillas no parece ser muy poderoso en comparación con otros marcos, así que creo que tendré que escribir más código en el controlador. – Demian

+1

No es un número difícil y rápido; Solo quise dar a entender que si está escribiendo una gran cantidad de código para que un CBV funcione de la manera que lo necesita, debería considerar si sería más eficiente ir con una vista basada en funciones. El motor de plantillas no tiene suficiente potencia, intencionalmente. La filosofía de Django dice que mezclar HTML y código es malo y debe evitarse tanto como sea humana y racionalmente posible. Por lo tanto, su vista debe configurar todo lo que necesitará la plantilla, y luego la plantilla idealmente solo la coloca en la pantalla. –

Respuesta

10

Un hecho es que la vista basada en clases se agregó en Django 1.3, por lo que si está planeando admitir versiones anteriores de Django, tendrá que seguir con la función, por ejemplo, si desea crear una aplicación genérica y ejecutarla en GitHub o tal que otras personas lo usen.

En cuanto a cuándo utilizar la vista basada en clase sobre la vista de función creo que esto dependerá de su caso de uso, mi consejo es que debe comprender el advantage de cada forma, y ​​en mi humilde opinión es bastante normal tener ambas implementaciones en un proyecto único.

Hubo este bonito article de Nick Coghlan en respuesta a otro gran artículo CBV were a mistake que vale la pena consultar.

Espero que haya sido útil :)

+0

Gracias! fue realmente útil y disfruté los artículos (creo que Luke Plant tiene algunos puntos muy buenos, pero llega a una conclusión incorrecta porque analiza un conjunto incompleto de escenarios). ¿Crees que si uso ambos estilos en un proyecto será problemático para otros programadores trabajar con mi código o es un escenario común? ¡Gracias de nuevo! – Demian

+0

@Demian: De nada, en cuanto a su pregunta, creo que si alguien quiere usar Django (> = 1.3) que debe aprender ambos estilos (lo que debe su compañeros de equipo), y si usted está utilizando los dos estilos (CBV vs FBV) en su proyecto (que en mi humilde opinión es una buena práctica), creo que lo que puede ser problemático es explicar por qué elegiste a utilizar X sobre Y, por lo que debe tener una buena razón para dar a ellos :) por la comprensión ventaja de cada uno sobre el otro. – mouad

+0

Es bueno decir que el último artículo mencionado fue actualizado y el autor no cree que los CBV siempre sean malos. De hecho, reconoce que hay casos de brillo de CVB. :) – MatheusJardimB

Cuestiones relacionadas