Herramientas de usuario

Herramientas del sitio


fw:others:webpy

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
fw:others:webpy [2011/11/22 19:59]
alfred
fw:others:webpy [2020/05/09 09:25] (actual)
Línea 41: Línea 41:
 </​code>​ </​code>​
 Si ejecutamos el código así, tal cual (''​$ python code.py''​),​ podremos indicar al entorno que escuche por un puerto concreto (''​$ python code.py 2727''​) y\o en una dirección concreta (''​$ python code.py 127.0.0.1 2727'',​ si no lo hiciesemos escucharía por el puerto 8080. Si ejecutamos el código así, tal cual (''​$ python code.py''​),​ podremos indicar al entorno que escuche por un puerto concreto (''​$ python code.py 2727''​) y\o en una dirección concreta (''​$ python code.py 127.0.0.1 2727'',​ si no lo hiciesemos escucharía por el puerto 8080.
 +
  
  
Línea 49: Línea 50:
   * ''​web.input()''​ devuelve los datos pasados por POST.   * ''​web.input()''​ devuelve los datos pasados por POST.
 <code python> <code python>
-web.input() Devuelve lista de parámetros.+web.input() Devuelve lista de parámetros.
 </​code>​ </​code>​
 +
 +
 ==== Tratar la salida ==== ==== Tratar la salida ====
 === Cambiar el content-type === === Cambiar el content-type ===
Línea 59: Línea 62:
     return render.index(code)     return render.index(code)
 </​code>​ </​code>​
 +Puedes ver distintos content-type [[code:​concepts#​protocolo_http|aquí]].
 === Devolver un fichero === === Devolver un fichero ===
 <code python> <code python>
Línea 78: Línea 81:
 ==== Sesiones y autentificación ==== ==== Sesiones y autentificación ====
 [[http://​webpy.org/​docs/​0.3/​sessions]] [[http://​webpy.org/​docs/​0.3/​sessions]]
 +
 +
  
 ==== Contenido estático ==== ==== Contenido estático ====
 +=== Carpeta static ===
 +Podemos agregar una carpeta static en la ruta de la aplicación,​ esta contendrá los documentos que no cambian. Por ejemplo ''<​nowiki>​http://​localhost/​static/​logo.png</​nowiki>''​ enviaría la imágen ''​./​static/​logo.png''​. \\ 
 +Una carpeta mapeada a partir de la directiva ''​Alias''​ de Apache también serviría.
 +=== A partir de código ===
 +<code python>
 +import os
 +import web
 +
 +urls = (
 +'/​images/​(.*)',​ '​images'​ #this is where the image folder is located....
 +)
 +
 +class images:
 +    def GET(self,​name):​
 +        ext = name.split("​."​)[-1] # Gather extension
 +
 +        cType = {
 +            "​png":"​images/​png",​
 +            "​jpg":"​image/​jpeg",​
 +            "​gif":"​image/​gif",​
 +            "​ico":"​image/​x-icon" ​           }
 +
 +        if name in os.listdir('​images'​): ​ # Security
 +            web.header("​Content-Type",​ cType[ext]) # Set the Header
 +            return open('​images/​%s'​%name,"​rb"​).read() # Notice '​rb'​ for reading images
 +        else:
 +            raise web.notfound()
 +</​code>​
  
 ==== Subir ficheros ==== ==== Subir ficheros ====
Línea 144: Línea 177:
 === ... Usarlo en un servidor de producción?​ === === ... Usarlo en un servidor de producción?​ ===
 Tipo Apache o Lighttpd. \\  Tipo Apache o Lighttpd. \\ 
 +
 +
 +
  
 ==== Notas ==== ==== Notas ====
-=== Ejemplos ​de content types ===+=== Aplicaciones ​de ejemplo ​=== 
 +  * {{fw:​others:​webpy:​andreisavu-music-share-09b9eec.zip|Aplicación para compartir .mp3}} 
 +=== Ideas para la creación de un proceso en background === 
 +:!: Falta probar en producción
 <code python> <code python>
-web.header('Content-type', "text/html; charset=utf-8")+#​!/​usr/​bin/​python 
 +# -*- coding: utf-8 *-* 
 + 
 +import ​web 
 +import json 
 +from mimerender import mimerender 
 +from multiprocessing import Process  
 +  
 +render_xml = lambda message: '<​message>​%s</​message>'​%message 
 +render_json = lambda **args: json.dumps(args) 
 +render_html = lambda message: ​'<​html><​body>​%s</​body></​html>'​%message 
 +render_txt = lambda message: message 
 +  
 +urls = ( 
 +    ​'/(.*)', '​greet'​ 
 +
 +app = web.application(urls,​ globals()) 
 +p = Process() 
 +  
 +class greet: 
 +    @mimerender( 
 +        default = '​html',​ 
 +        ​html = render_html,​ 
 +        xml  = render_xml,​ 
 +        json = render_json,​ 
 +        txt  = render_txt 
 +    )     
 +    def GET(self, name): 
 +        global p 
 +        p = Process(target = self.test) 
 +        p.start() 
 +        if not name:  
 +            name = '​world'​ 
 +        return {'​message':​ '​Hello,​ ' + name + '​!'​} 
 +     
 +    def test (self): 
 +        import os 
 +        print '​entra!!!'​ 
 +        os.system('​ls ​-laR / > /​home/​alfred/​Desktop/​test.txt'​) 
 +  
 +if __name__ == "__main__":​ 
 +    app.run() 
 +    p.join()
 </​code>​ </​code>​
  
fw/others/webpy.1321991961.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)