[pyar] Complejo.

Alejandro Caro alejocaro06 en hotmail.com
Mie Oct 21 09:00:56 ART 2015


Estoy incursionando en el modelo vista controlador con un mini proyecto con Tornado.

Tornado me anda fantástico, me es relativamente fácil, pero veo que con la estructuras se me complica manejarlo.
Vengo de hacer cosas en PHP y hace años que no hago web con Python, así que estoy bastante verde devuelta (¡no me acuerdo de nada!)

Les presentaré el modelo de la estructura que quiero realizar y luego la "lista" de preguntas. (Con mayúsculas son las carpetas)

TRUNK:
... main.py
... STATIC
... ... LIBS
... ... ... conexion.py
... ... ... base.py
... ... RESOURCES
... ... ... JS IMG etc....
... CONTROLLER
... ... LOGIN
... ... ... loginController.py
... ... USER
... ... ... usuariosController.py
... QUERYS
... ... LOGIN
... ... ... consultasLogin.py
... ... USER
... ... ... consultasUsuario.py

ejemplo código en loginController.py

import tornado
import hashlib

#login_query = imp.load_source('login_query', '../../query/login/login_query.py')

base = tornado.web.RequestHandler

class MainHandler(base):
    def get(self):
        if not self.current_user:
            self.redirect("/login")
            return
        name = tornado.escape.xhtml_escape(self.current_user)
        self.write('<html><body>Hello, ' + name + '<form action="/close" method="post"><input type="submit" value="Close"></form></body></html>')


En main.py:

from static.libs.base import BaseHandler
import controller.login_controller.loginController as login
login.base = BaseHandler

Y en base.py:

class BaseHandler(tornado.web.RequestHandler):
    def get_current_user(self):
        return self.get_secure_cookie("user")

La idea es, importo las cosas en main.py y paso BaseHandler a todos los controladores, pensando que ésta controla la session (secure_cookie) de todo el sistema.
Cuando se necesitan, desde el main.py importaría el módulo de conexión, se lo paso a QUERYS, las funciones de consultas se las paso a los controladores.
Acá está el problema, veo que es un matete gigantesco, un vicio que traigo desde PHP para hacer las cosas, donde para colmo, por malas prácticas ya estoy confundido.

¿Como debiera ser la forma "correcta" de generar un proyecto web con Python.tornado?
¿Es correcto que cada vez que genero una clase controladora, haga una conexión nueva a base de datos desde el controlador? (Yo creo que no, pero Python es distinto a PHP, así que no se)
¿La estructura de consultas debiera ser LOGIN/QUERY e importo desde loginController.py las consultas desde dentro de la carpeta QUERY?
Quiero ahorrar escribir código al máximo, sabiéndo que la estructura del proyecto influye en esto ¿Se ha investigado cual es la mas óptima?¿Como qué lo puedo buscar en google? (Busco y busco y no encuentro ejemplos de lo bueno).

Tengo un módulo armado en PHP de manera básica y con Symfony para usar dinámicamente todo lo que tenga que ver con las grillas JQGrid. ¿Hay hecho algo en Python? Me gustaría pasar a Python la misma funcionalidad y dejarlo encapsulado para su uso. O sea, el objetivo final es tener algo fácil de manejar con este tipo de estructura. Pero me compliqué.

Alejandro Caro
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20151021/c1e6882d/attachment.html>


More information about the pyar mailing list