# Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # Maintained by the python-doc-es workteam. # docs-es@python.org / # https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to # get the list of volunteers # msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-10-12 19:43+0200\n" "PO-Revision-Date: 2023-12-24 11:45+0100\n" "Last-Translator: Rodrigo Tobar \n" "Language-Team: python-doc-es\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.13.0\n" "X-Generator: Poedit 3.0.1\n" #: ../Doc/library/cgi.rst:2 msgid ":mod:`cgi` --- Common Gateway Interface support" msgstr ":mod:`cgi` --- Soporte de Interfaz de Entrada Común (CGI)" #: ../Doc/library/cgi.rst:8 msgid "**Source code:** :source:`Lib/cgi.py`" msgstr "**Código fuente:** :source:`Lib/cgi.py`" #: ../Doc/library/cgi.rst:27 msgid "" "The :mod:`cgi` module is deprecated (see :pep:`PEP 594 <594#cgi>` for " "details and alternatives)." msgstr "" "El módulo :mod:`cgi` está obsoleto (vea :pep:`PEP 594 <594#cgi>` para más " "detalles y alternativas)." #: ../Doc/library/cgi.rst:22 msgid "" "The :class:`FieldStorage` class can typically be replaced with :func:`urllib." "parse.parse_qsl` for ``GET`` and ``HEAD`` requests, and the :mod:`email." "message` module or `multipart `_ for " "``POST`` and ``PUT``. Most :ref:`utility functions ` have replacements." msgstr "" "La clase :class:`FieldStorage` puede ser típicamente reemplazada con :func:" "`urllib.parse.parse_qsl` para solicitudes ``GET`` y ``HEAD``, y el módulo :" "mod:`email.message` o `multipart `_ " "para ``POST`` y ``PUT``. La mayoría de las :ref:`funciones de utilidad " "` tienen reemplazo." #: ../Doc/library/cgi.rst:30 msgid "Support module for Common Gateway Interface (CGI) scripts." msgstr "Módulo de soporte para scripts de la Interfaz de Entrada Común (CGI)" #: ../Doc/library/cgi.rst:32 msgid "" "This module defines a number of utilities for use by CGI scripts written in " "Python." msgstr "" "Este módulo define una serie de utilidades para el uso de scripts CGI " "escritos en Python." #: ../Doc/library/cgi.rst:35 msgid "" "The global variable ``maxlen`` can be set to an integer indicating the " "maximum size of a POST request. POST requests larger than this size will " "result in a :exc:`ValueError` being raised during parsing. The default value " "of this variable is ``0``, meaning the request size is unlimited." msgstr "" "La variable global ``maxlen`` puede ser establecida en un entero indicando " "el tamaño máximo de una solicitud POST. Solicitudes POST más grandes que " "este tamaño resultarán en en lanzamiento de un :exc:`ValueError` durante el " "análisis. El valor por defecto de esta variable es ``0``, lo que significa " "que el tamaño de las solicitudes es ilimitado." #: ../Doc/includes/wasm-notavail.rst:3 msgid ":ref:`Availability `: not Emscripten, not WASI." msgstr ":ref:`Disponibilidad `: no Emscripten, no WASI." #: ../Doc/includes/wasm-notavail.rst:5 msgid "" "This module does not work or is not available on WebAssembly platforms " "``wasm32-emscripten`` and ``wasm32-wasi``. See :ref:`wasm-availability` for " "more information." msgstr "" "Este módulo no funciona o no está disponible en plataformas WebAssembly " "``wasm32-emscripten`` y ``wasm32-wasi``. Vea :ref:`wasm-availability` para " "más información." #: ../Doc/library/cgi.rst:43 msgid "Introduction" msgstr "Introducción" #: ../Doc/library/cgi.rst:47 msgid "" "A CGI script is invoked by an HTTP server, usually to process user input " "submitted through an HTML ``
`` or ```` element." msgstr "" "Un script de CGI es invocado por un servidor HTTP, generalmente para " "procesar entradas de usuario entregadas mediante un elemento HTML ```` " "o ````." #: ../Doc/library/cgi.rst:50 msgid "" "Most often, CGI scripts live in the server's special :file:`cgi-bin` " "directory. The HTTP server places all sorts of information about the request " "(such as the client's hostname, the requested URL, the query string, and " "lots of other goodies) in the script's shell environment, executes the " "script, and sends the script's output back to the client." msgstr "" "Muy a menudo, los scripts CGI viven en el directorio especial :file:`cgi-" "bin` del servidor. El servidor HTTP coloca todo tipo de información sobre la " "solicitud (como el nombre de host del cliente, la dirección URL solicitada, " "la cadena de búsqueda (query string) y muchas otras consultas) en el entorno " "de shell del script, ejecuta el script y envía la salida del script al " "cliente." #: ../Doc/library/cgi.rst:56 msgid "" "The script's input is connected to the client too, and sometimes the form " "data is read this way; at other times the form data is passed via the " "\"query string\" part of the URL. This module is intended to take care of " "the different cases and provide a simpler interface to the Python script. " "It also provides a number of utilities that help in debugging scripts, and " "the latest addition is support for file uploads from a form (if your browser " "supports it)." msgstr "" "La entrada del script también está conectada al cliente, y a veces los datos " "del formulario se leen de esta manera; en otras ocasiones los datos del " "formulario se pasan a través de la parte \"cadena de caracteres de búsqueda " "(query string)\" de la dirección URL. Este módulo está diseñado para " "ocuparse de los diferentes casos y proporcionar una interfaz más simple al " "script de Python. También proporciona una serie de utilidades que ayudan en " "la depuración de scripts, y la última adición es la compatibilidad con " "cargas de archivos desde un formulario (si el navegador lo admite)." #: ../Doc/library/cgi.rst:63 msgid "" "The output of a CGI script should consist of two sections, separated by a " "blank line. The first section contains a number of headers, telling the " "client what kind of data is following. Python code to generate a minimal " "header section looks like this::" msgstr "" "La salida de un script CGI debe constar de dos secciones, separadas por una " "línea en blanco. La primera sección contiene una serie de encabezados, " "indicando al cliente qué tipo de datos sigue. El código de Python para " "generar una sección de encabezado mínima tiene este aspecto::" #: ../Doc/library/cgi.rst:71 msgid "" "The second section is usually HTML, which allows the client software to " "display nicely formatted text with header, in-line images, etc. Here's " "Python code that prints a simple piece of HTML::" msgstr "" "La segunda sección suele ser HTML, lo que permite al software cliente " "mostrar texto bien formateado con encabezado, imágenes en línea, etc. Aquí " "está el código Python que imprime una simple pieza de HTML::" #: ../Doc/library/cgi.rst:83 msgid "Using the cgi module" msgstr "Usando el módulo CGI" #: ../Doc/library/cgi.rst:85 msgid "Begin by writing ``import cgi``." msgstr "Empieza escribiendo ``import cgi``." #: ../Doc/library/cgi.rst:87 msgid "When you write a new script, consider adding these lines::" msgstr "Cuando escribas un nuevo script, considera añadir estas líneas::" #: ../Doc/library/cgi.rst:92 msgid "" "This activates a special exception handler that will display detailed " "reports in the web browser if any errors occur. If you'd rather not show " "the guts of your program to users of your script, you can have the reports " "saved to files instead, with code like this::" msgstr "" "Esto activa un gestor de excepciones especial que mostrará informes " "detallados en el explorador web si se produce algún error. Si prefiere no " "mostrar los detalles de su programa a los usuarios de su script, puede tener " "los informes guardados en archivos en su lugar, como se muestra en el " "siguiente código::" #: ../Doc/library/cgi.rst:100 msgid "" "It's very helpful to use this feature during script development. The reports " "produced by :mod:`cgitb` provide information that can save you a lot of time " "in tracking down bugs. You can always remove the ``cgitb`` line later when " "you have tested your script and are confident that it works correctly." msgstr "" "Es muy útil usar esta característica durante el desarrollo de scripts. Los " "informes producidos por :mod:`cgitb` proporcionan información que puede " "ahorrarle mucho tiempo en el seguimiento de errores. Siempre puede eliminar " "la línea ``cgitb`` más adelante cuando haya probado su script y esté seguro " "de que funciona correctamente." #: ../Doc/library/cgi.rst:105 msgid "" "To get at submitted form data, use the :class:`FieldStorage` class. If the " "form contains non-ASCII characters, use the *encoding* keyword parameter set " "to the value of the encoding defined for the document. It is usually " "contained in the META tag in the HEAD section of the HTML document or by " "the :mailheader:`Content-Type` header. This reads the form contents from " "the standard input or the environment (depending on the value of various " "environment variables set according to the CGI standard). Since it may " "consume standard input, it should be instantiated only once." msgstr "" "Para llegar a los datos de formulario enviados usa la clase :class:" "`FieldStorage`. Si el formulario contiene caracteres que no sean ASCII, usa " "el parámetro de palabra clave *encoding* establecido en el valor del " "codificado definido para el documento. Éste está usualmente contenido en la " "etiqueta META en la sección HEAD del documento HTML, o en el encabezado :" "mailheader:`Content-Type`. Esto lee los contenidos del formulario desde la " "entrada estándar o el ambiente (dependiendo de los valores de varias " "variables de entorno establecidas de acuerdo del estándar CGI). Dado que " "podría consumir entrada estándar, sólo se debería instanciar una sola vez." #: ../Doc/library/cgi.rst:114 msgid "" "The :class:`FieldStorage` instance can be indexed like a Python dictionary. " "It allows membership testing with the :keyword:`in` operator, and also " "supports the standard dictionary method :meth:`~dict.keys` and the built-in " "function :func:`len`. Form fields containing empty strings are ignored and " "do not appear in the dictionary; to keep such values, provide a true value " "for the optional *keep_blank_values* keyword parameter when creating the :" "class:`FieldStorage` instance." msgstr "" "La instancia :class:`FieldStorage` puede ser indexada como un diccionario " "Python. Permite las pruebas de afiliación con el operador :keyword:`in`, y " "también es compatible con el método de diccionario estándar :meth:`~dict." "keys` y la función incorporada :func:`len`. Los campos de formulario que " "contienen cadenas de caracteres vacías son ignoradas y no aparecen en el " "diccionario; para mantener estos valores, proporciona un valor verdadero " "para el parámetro de palabra clave opcional *keep_blank_values* al crear la " "instancia :class:`FieldStorage`." #: ../Doc/library/cgi.rst:122 msgid "" "For instance, the following code (which assumes that the :mailheader:" "`Content-Type` header and blank line have already been printed) checks that " "the fields ``name`` and ``addr`` are both set to a non-empty string::" msgstr "" "Por ejemplo, el código siguiente (que supone que el encabezado :mailheader:" "`Content-Type` y la línea en blanco ya se han impreso) comprueba que los " "campos ``name`` y ``addr`` son ambos establecidos a una cadena de caracteres " "no vacía::" #: ../Doc/library/cgi.rst:136 msgid "" "Here the fields, accessed through ``form[key]``, are themselves instances " "of :class:`FieldStorage` (or :class:`MiniFieldStorage`, depending on the " "form encoding). The :attr:`~FieldStorage.value` attribute of the instance " "yields the string value of the field. The :meth:`~FieldStorage.getvalue` " "method returns this string value directly; it also accepts an optional " "second argument as a default to return if the requested key is not present." msgstr "" "Aquí los campos, a los que se accede a través de ``form[key]``, son por sí " "mismos las instancias de :class:`FieldStorage` (o :class:`MiniFieldStorage`, " "dependiendo de la codificación del formulario). El atributo :attr:" "`~FieldStorage.value` de la instancia produce el valor de cadena de " "caracteres del campo. El método :meth:`~FieldStorage.getvalue` retorna este " "valor de cadena de caracteres directamente; también acepta un segundo " "argumento opcional como valor predeterminado para retornar si la clave " "solicitada no está presente." #: ../Doc/library/cgi.rst:143 msgid "" "If the submitted form data contains more than one field with the same name, " "the object retrieved by ``form[key]`` is not a :class:`FieldStorage` or :" "class:`MiniFieldStorage` instance but a list of such instances. Similarly, " "in this situation, ``form.getvalue(key)`` would return a list of strings. If " "you expect this possibility (when your HTML form contains multiple fields " "with the same name), use the :meth:`~FieldStorage.getlist` method, which " "always returns a list of values (so that you do not need to special-case the " "single item case). For example, this code concatenates any number of " "username fields, separated by commas::" msgstr "" "Si los datos del formulario enviados contienen más de un campo con el mismo " "nombre, el objeto recuperado por ``form[key]`` no es una instancia :class:" "`FieldStorage` o :class:`MiniFieldStorage`, sino una lista de dichas " "instancias. De forma similar, en esta situación, ``form.getvalue(key)`` " "retornaría una lista de cadenas de caracteres. Si espera esta posibilidad " "(cuando su formulario HTML contiene múltiples campos con el mismo nombre), " "utilice el método :meth:`~FieldStorage.getlist`, que siempre retorna una " "lista de valores (para que no sea necesario poner en mayúsculas y minúsculas " "en el caso de un solo elemento). Por ejemplo, este código concatena " "cualquier número de campos de nombre de usuario, separados por comas::" #: ../Doc/library/cgi.rst:156 msgid "" "If a field represents an uploaded file, accessing the value via the :attr:" "`~FieldStorage.value` attribute or the :meth:`~FieldStorage.getvalue` method " "reads the entire file in memory as bytes. This may not be what you want. " "You can test for an uploaded file by testing either the :attr:`~FieldStorage." "filename` attribute or the :attr:`~FieldStorage.file` attribute. You can " "then read the data from the :attr:`!file` attribute before it is " "automatically closed as part of the garbage collection of the :class:" "`FieldStorage` instance (the :func:`~io.RawIOBase.read` and :func:`~io." "IOBase.readline` methods will return bytes)::" msgstr "" "Si un campo representa un archivo cargado, el acceso al valor a través del " "atributo :attr:`~FieldStorage.value` o el método :meth:`~FieldStorage." "getvalue` lee todo el archivo en memoria como bytes. Puede que esto no sea " "lo que quiera que ocurra. Puede probar un archivo cargado probando el " "atributo :attr:`~FieldStorage.filename` o el atributo :attr:`~FieldStorage." "file`. Después, puede leer los datos del atributo :attr:`!file` antes de " "que se cierre automáticamente como parte de la recolección de elementos no " "utilizados de la instancia :class:`FieldStorage` (los métodos :func:`~io." "RawIOBase.read` y :func:`~io.IOBase.readline` retornarán bytes)::" #: ../Doc/library/cgi.rst:176 msgid "" ":class:`FieldStorage` objects also support being used in a :keyword:`with` " "statement, which will automatically close them when done." msgstr "" "Los objetos :class:`FieldStorage` también permiten ser usados en una " "sentencia :keyword:`with` , lo que automáticamente los cerrará cuando " "termine la sentencia." #: ../Doc/library/cgi.rst:179 msgid "" "If an error is encountered when obtaining the contents of an uploaded file " "(for example, when the user interrupts the form submission by clicking on a " "Back or Cancel button) the :attr:`~FieldStorage.done` attribute of the " "object for the field will be set to the value -1." msgstr "" "Si un error es encontrado al obtener el contenido de un archivo cargado (por " "ejemplo, cuando el usuario interrumpe el envío del formulario haciendo clic " "en un botón Atrás o Cancelar), el atributo :attr:`~FieldStorage.done` del " "objeto para el campo se establecerá en el valor -1." #: ../Doc/library/cgi.rst:184 msgid "" "The file upload draft standard entertains the possibility of uploading " "multiple files from one field (using a recursive :mimetype:`multipart/\\*` " "encoding). When this occurs, the item will be a dictionary-like :class:" "`FieldStorage` item. This can be determined by testing its :attr:`!type` " "attribute, which should be :mimetype:`multipart/form-data` (or perhaps " "another MIME type matching :mimetype:`multipart/\\*`). In this case, it can " "be iterated over recursively just like the top-level form object." msgstr "" "El borrador de archivo de carga estándar presenta la posibilidad de cargar " "varios archivos desde un campo (utilizando una codificación recursiva :" "mimetype:`multipart/\\*`). Cuando esto ocurre, el elemento será un elemento " "similar a un diccionario :class:`FieldStorage`. Esto se puede determinar " "probando su atributo :attr:`!type`, que debe ser :mimetype:`multipart/form-" "data` (o tal vez otro tipo MIME que coincida :mimetype:`multipart/\\*`). En " "este caso, se puede iterar recursivamente al igual que el objeto de " "formulario de nivel superior." #: ../Doc/library/cgi.rst:192 msgid "" "When a form is submitted in the \"old\" format (as the query string or as a " "single data part of type :mimetype:`application/x-www-form-urlencoded`), the " "items will actually be instances of the class :class:`MiniFieldStorage`. In " "this case, the :attr:`!list`, :attr:`!file`, and :attr:`filename` attributes " "are always ``None``." msgstr "" "Cuando se envía un formulario en el formato \"antiguo\" (como la cadena de " "caracteres de consulta (query string) o como una sola parte de datos de " "tipo :mimetype:`application/x-www-form-urlencoded`), los elementos serán " "realmente instancias de la clase :class:`MiniFieldStorage`. En este caso, " "los atributos :attr:`!list`, :attr:`!file` y :attr:`filename` siempre son " "``None``." #: ../Doc/library/cgi.rst:197 msgid "" "A form submitted via POST that also has a query string will contain both :" "class:`FieldStorage` and :class:`MiniFieldStorage` items." msgstr "" "Un formulario enviado a través de POST que también tiene una cadena de " "caracteres de consulta (query string) contendrá los elementos :class:" "`FieldStorage` y :class:`MiniFieldStorage`." #: ../Doc/library/cgi.rst:200 msgid "" "The :attr:`~FieldStorage.file` attribute is automatically closed upon the " "garbage collection of the creating :class:`FieldStorage` instance." msgstr "" "El atributo :attr:`~FieldStorage.file` se cierra automáticamente con el " "recolector de basura de la instancia creada :class:`FieldStorage`." #: ../Doc/library/cgi.rst:204 msgid "" "Added support for the context management protocol to the :class:" "`FieldStorage` class." msgstr "" "Agregado soporte para el protocolo de administrador de contexto a la clase :" "class:`FieldStorage` ." #: ../Doc/library/cgi.rst:210 msgid "Higher Level Interface" msgstr "Interfaz de nivel superior" #: ../Doc/library/cgi.rst:212 msgid "" "The previous section explains how to read CGI form data using the :class:" "`FieldStorage` class. This section describes a higher level interface which " "was added to this class to allow one to do it in a more readable and " "intuitive way. The interface doesn't make the techniques described in " "previous sections obsolete --- they are still useful to process file uploads " "efficiently, for example." msgstr "" "La sección anterior explica cómo leer datos de un formulario CGI usando la " "clase :class:`FieldStorage`. Esta sección describe un nivel de interfaz " "superior que se añadió a esta clase para permitir que uno lo haga de una " "manera más legible e intuitiva. La interfaz no hace que las técnicas " "descritas en las secciones anteriores estén obsoletas -- por ejemplo, siguen " "siendo útiles para procesar la carga de archivos de manera eficiente." #: ../Doc/library/cgi.rst:221 msgid "" "The interface consists of two simple methods. Using the methods you can " "process form data in a generic way, without the need to worry whether only " "one or more values were posted under one name." msgstr "" "La interfaz consiste en dos métodos simples. Usando los métodos puedes " "procesar datos de formulario de una manera genérica, sin la necesidad de " "preocuparte si solo se publicaron uno o más valores con un solo nombre." #: ../Doc/library/cgi.rst:225 msgid "" "In the previous section, you learned to write following code anytime you " "expected a user to post more than one value under one name::" msgstr "" "En la sección anterior, aprendiste a escribir el siguiente código cada vez " "que esperabas que un usuario publicara más de un valor con un nombre::" #: ../Doc/library/cgi.rst:234 msgid "" "This situation is common for example when a form contains a group of " "multiple checkboxes with the same name::" msgstr "" "Esta situación es común, por ejemplo, cuando un formulario contiene un grupo " "de múltiples casillas de verificación (checkboxes) con el mismo nombre::" #: ../Doc/library/cgi.rst:240 msgid "" "In most situations, however, there's only one form control with a particular " "name in a form and then you expect and need only one value associated with " "this name. So you write a script containing for example this code::" msgstr "" "En la mayoría de las situaciones, sin embargo, solo hay un control de " "formulario con un nombre determinado en un formulario y así, espera y solo " "necesita un valor asociado con este nombre. Así que escribe un script que " "contiene, por ejemplo, este código::" #: ../Doc/library/cgi.rst:246 msgid "" "The problem with the code is that you should never expect that a client will " "provide valid input to your scripts. For example, if a curious user appends " "another ``user=foo`` pair to the query string, then the script would crash, " "because in this situation the ``getvalue(\"user\")`` method call returns a " "list instead of a string. Calling the :meth:`~str.upper` method on a list " "is not valid (since lists do not have a method of this name) and results in " "an :exc:`AttributeError` exception." msgstr "" "El problema con el código es que nunca debe esperar que un cliente " "proporcione una entrada válida a los scripts. Por ejemplo, si un usuario " "curioso anexa otro par ``user=foo`` a la cadena de caracteres de consulta " "(query string), el script se bloquearía, porque en esta situación la llamada " "al método ``getvalue(\"user\")`` retorna una lista en lugar de una cadena de " "caracteres. Llamar al método :meth:`~str.upper` en una lista no es válido " "(ya que las listas no tienen un método con este nombre) y se produce una " "excepción :exc:`AttributeError`." #: ../Doc/library/cgi.rst:254 msgid "" "Therefore, the appropriate way to read form data values was to always use " "the code which checks whether the obtained value is a single value or a list " "of values. That's annoying and leads to less readable scripts." msgstr "" "Por lo tanto, la forma adecuada de leer los valores de datos de formulario " "era usar siempre el código que comprueba si el valor obtenido es un valor " "único o una lista de valores. Eso es molesto y conduce a scripts menos " "legibles." #: ../Doc/library/cgi.rst:258 msgid "" "A more convenient approach is to use the methods :meth:`~FieldStorage." "getfirst` and :meth:`~FieldStorage.getlist` provided by this higher level " "interface." msgstr "" "Un enfoque más conveniente es utilizar los métodos :meth:`~FieldStorage." "getfirst` y :meth:`~FieldStorage.getlist` proporcionados por esta interfaz " "de nivel superior." #: ../Doc/library/cgi.rst:264 msgid "" "This method always returns only one value associated with form field *name*. " "The method returns only the first value in case that more values were posted " "under such name. Please note that the order in which the values are " "received may vary from browser to browser and should not be counted on. " "[#]_ If no such form field or value exists then the method returns the " "value specified by the optional parameter *default*. This parameter " "defaults to ``None`` if not specified." msgstr "" "Este método siempre retorna solo un valor asociado con el campo de " "formulario *name*. El método retorna solo el primer valor en caso de que se " "registraran más valores con dicho nombre. Tenga en cuenta que el orden en " "que se reciben los valores puede variar de un navegador a otro y no debe " "darse por sentado. [#]_ Si no existe ningún campo o valor de formulario, el " "método retorna el valor especificado por el parámetro opcional *default*. " "Este parámetro tiene como valor predeterminado ``None`` si no se especifica." #: ../Doc/library/cgi.rst:275 msgid "" "This method always returns a list of values associated with form field " "*name*. The method returns an empty list if no such form field or value " "exists for *name*. It returns a list consisting of one item if only one " "such value exists." msgstr "" "Este método siempre retorna una lista de valores asociados con el campo de " "formulario *name*. El método retorna una lista vacía si no existe tal campo " "o valor de formulario para *name*. Retorna una lista que consta de un " "elemento si solo existe un valor de este tipo." #: ../Doc/library/cgi.rst:279 msgid "Using these methods you can write nice compact code::" msgstr "Usando estos métodos puede escribir código compacto agradable::" #: ../Doc/library/cgi.rst:291 msgid "Functions" msgstr "Funciones" #: ../Doc/library/cgi.rst:293 msgid "" "These are useful if you want more control, or if you want to employ some of " "the algorithms implemented in this module in other circumstances." msgstr "" "Estas son útiles si desea más control, o si desea emplear algunos de los " "algoritmos implementados en este módulo en otras circunstancias." #: ../Doc/library/cgi.rst:299 msgid "" "Parse a query in the environment or from a file (the file defaults to ``sys." "stdin``). The *keep_blank_values*, *strict_parsing* and *separator* " "parameters are passed to :func:`urllib.parse.parse_qs` unchanged." msgstr "" "Analiza una consulta en el entorno o desde un archivo (el archivo " "predeterminado es ``sys.stdin``). Los parámetros *keep_blank_values*, " "*strict_parsing* y *separator* se pasan a :func:`urllib.parse.parse_qs` sin " "cambios." #: ../Doc/library/cgi.rst:307 msgid "" "This function, like the rest of the :mod:`cgi` module, is deprecated. It can " "be replaced by calling :func:`urllib.parse.parse_qs` directly on the desired " "query string (except for ``multipart/form-data`` input, which can be handled " "as described for :func:`parse_multipart`)." msgstr "" "Esta función, como el resto del módulo :mod:`cgi`, está obsoleta. Puede ser " "reemplazada llamando directamente a :func:`urllib.parse.parse_qs` con la " "cadena de caracteres de la consulta (excepto para entradas ``multipart/form-" "data``, las cuales puede ser manejadas como se describe para :func:" "`parse_multipart`)." #: ../Doc/library/cgi.rst:312 msgid "" "Parse input of type :mimetype:`multipart/form-data` (for file uploads). " "Arguments are *fp* for the input file, *pdict* for a dictionary containing " "other parameters in the :mailheader:`Content-Type` header, and *encoding*, " "the request encoding." msgstr "" "Analiza la entrada de tipo :mimetype:`multipart/form-data` (para cargas de " "archivos). Los argumentos son *fp* para el archivo de entrada, *pdict* para " "un diccionario que contiene otros parámetros en el encabezado :mailheader:" "`Content-Type` y *encoding*, la codificación de la solicitud." #: ../Doc/library/cgi.rst:317 msgid "" "Returns a dictionary just like :func:`urllib.parse.parse_qs`: keys are the " "field names, each value is a list of values for that field. For non-file " "fields, the value is a list of strings." msgstr "" "Retorna un diccionario al igual que :func:`urllib.parse.parse_qs`: las " "claves son los nombres de campo, cada valor es una lista de valores para ese " "campo. Para los campos que no son de archivo, el valor es una lista de " "cadenas de caracteres." #: ../Doc/library/cgi.rst:321 msgid "" "This is easy to use but not much good if you are expecting megabytes to be " "uploaded --- in that case, use the :class:`FieldStorage` class instead which " "is much more flexible." msgstr "" "Esto es fácil de usar pero no muy bueno si espera que se carguen megabytes " "--- en ese caso, utilice la clase :class:`FieldStorage` en su lugar, que es " "mucho más flexible." #: ../Doc/library/cgi.rst:325 msgid "" "Added the *encoding* and *errors* parameters. For non-file fields, the " "value is now a list of strings, not bytes." msgstr "" "Se agregaron los parámetros *encoding* y *errors*. Para los campos que no " "son de archivo, el valor es ahora una lista de cadenas de caracteres, no " "bytes." #: ../Doc/library/cgi.rst:329 msgid "Added the *separator* parameter." msgstr "Agregado el parámetro *separator*." #: ../Doc/library/cgi.rst:337 msgid "" "This function, like the rest of the :mod:`cgi` module, is deprecated. It can " "be replaced with the functionality in the :mod:`email` package (e.g. :class:" "`email.message.EmailMessage`/:class:`email.message.Message`) which " "implements the same MIME RFCs, or with the `multipart `__ PyPI project." msgstr "" "Esta función, como el resto del módulo :mod:`cgi`, está obsoleta. Puede ser " "reemplazada con la funcionalidad del paquete :mod:`email` (por ejemplo, :" "class:`email.message.EmailMessage`/:class:`email.message.Message`) el cual " "implementa los mismos RFCs de MIME, o con el proyecto de PyPI `multipart " "`__." #: ../Doc/library/cgi.rst:342 msgid "" "Parse a MIME header (such as :mailheader:`Content-Type`) into a main value " "and a dictionary of parameters." msgstr "" "Analiza un encabezado MIME (como :mailheader:`Content-Type`) en un valor " "principal y un diccionario de parámetros." #: ../Doc/library/cgi.rst:355 msgid "" "This function, like the rest of the :mod:`cgi` module, is deprecated. It can " "be replaced with the functionality in the :mod:`email` package, which " "implements the same MIME RFCs." msgstr "" "Esta función, como el resto del módulo :mod:`cgi`, está obsoleta. Puede ser " "reemplazada con la funcionalidad del paquete :mod:`email`, el cual " "implementa los mismos RFCs de MIME." #: ../Doc/library/cgi.rst:350 msgid "For example, with :class:`email.message.EmailMessage`::" msgstr "Por ejemplo, con :class:`email.message.EmailMessage`::" #: ../Doc/library/cgi.rst:360 msgid "" "Robust test CGI script, usable as main program. Writes minimal HTTP headers " "and formats all information provided to the script in HTML format." msgstr "" "Script CGI de prueba robusto, usable como programa principal. Escribe " "encabezados HTTP mínimos y formatea toda la información proporcionada hacia " "el script en formato HTML." #: ../Doc/library/cgi.rst:366 msgid "Format the shell environment in HTML." msgstr "Da formato al entorno del shell en HTML." #: ../Doc/library/cgi.rst:371 msgid "Format a form in HTML." msgstr "Da formato a un formulario en HTML." #: ../Doc/library/cgi.rst:376 msgid "Format the current directory in HTML." msgstr "Da formato al directorio actual en HTML." #: ../Doc/library/cgi.rst:381 msgid "Print a list of useful (used by CGI) environment variables in HTML." msgstr "" "Imprime una lista de variables de entorno útiles (utilizadas por CGI) en " "HTML." #: ../Doc/library/cgi.rst:387 msgid "Caring about security" msgstr "Preocuparse por la seguridad" #: ../Doc/library/cgi.rst:391 msgid "" "There's one important rule: if you invoke an external program (via :func:`os." "system`, :func:`os.popen` or other functions with similar functionality), " "make very sure you don't pass arbitrary strings received from the client to " "the shell. This is a well-known security hole whereby clever hackers " "anywhere on the web can exploit a gullible CGI script to invoke arbitrary " "shell commands. Even parts of the URL or field names cannot be trusted, " "since the request doesn't have to come from your form!" msgstr "" "Hay una regla importante: si invoca un programa externo (a través de :func:" "`os.system`, :func:`os.popen` u otras funciones con una funcionalidad " "similar), asegúrese bien de no pasar strings arbitrarios recibidos desde el " "cliente hacia la shell. Este es una brecha de seguridad muy conocida por la " "que los hackers inteligentes en cualquier lugar de la web pueden explotar un " "inocente script CGI para invocar comandos de shell arbitrarios. Incluso " "partes de la URL o nombres de campo pueden no ser confiables, ya que la " "solicitud no tiene que venir de su formulario!" #: ../Doc/library/cgi.rst:399 msgid "" "To be on the safe side, if you must pass a string gotten from a form to a " "shell command, you should make sure the string contains only alphanumeric " "characters, dashes, underscores, and periods." msgstr "" "Para estar en el lado seguro, si debe pasar una cadena de caracteres de un " "formulario a un comando de shell, debe asegurarse de que la cadena de " "caracteres contiene solo caracteres alfanuméricos, guiones, guiones bajos y " "puntos." #: ../Doc/library/cgi.rst:405 msgid "Installing your CGI script on a Unix system" msgstr "Instalando su script de CGI en un sistema Unix" #: ../Doc/library/cgi.rst:407 msgid "" "Read the documentation for your HTTP server and check with your local system " "administrator to find the directory where CGI scripts should be installed; " "usually this is in a directory :file:`cgi-bin` in the server tree." msgstr "" "Lea la documentación del servidor HTTP y consulte con el administrador del " "sistema local para encontrar el directorio donde se deben instalar los " "scripts CGI; por lo general, esto se encuentra en un directorio :file:`cgi-" "bin` en el árbol del servidor." #: ../Doc/library/cgi.rst:411 msgid "" "Make sure that your script is readable and executable by \"others\"; the " "Unix file mode should be ``0o755`` octal (use ``chmod 0755 filename``). " "Make sure that the first line of the script contains ``#!`` starting in " "column 1 followed by the pathname of the Python interpreter, for instance::" msgstr "" "Asegúrese de que el script es legible y ejecutable por \"otros\"; el modo de " "archivo Unix debe ser octal ``0o755`` (utilice ``chmod 0755 filename``). " "Asegúrese de que la primera línea del script contiene ``#!`` a partir de la " "columna 1 seguida del nombre de ruta del intérprete de Python, por ejemplo::" #: ../Doc/library/cgi.rst:418 msgid "" "Make sure the Python interpreter exists and is executable by \"others\"." msgstr "" "Asegúrese que el intérprete de Python exista y sea ejecutable por \"otros\"." #: ../Doc/library/cgi.rst:420 msgid "" "Make sure that any files your script needs to read or write are readable or " "writable, respectively, by \"others\" --- their mode should be ``0o644`` for " "readable and ``0o666`` for writable. This is because, for security reasons, " "the HTTP server executes your script as user \"nobody\", without any special " "privileges. It can only read (write, execute) files that everybody can read " "(write, execute). The current directory at execution time is also different " "(it is usually the server's cgi-bin directory) and the set of environment " "variables is also different from what you get when you log in. In " "particular, don't count on the shell's search path for executables (:envvar:" "`PATH`) or the Python module search path (:envvar:`PYTHONPATH`) to be set to " "anything interesting." msgstr "" "Asegúrese de que cualquier archivo que su script necesite leer o escribir " "sea legible o tenga permiso de escritura, respectivamente, por \"otros\" --- " "su modo debe ser ``0o644`` para legible y ``0o666`` para escribir. Esto se " "debe a que, por razones de seguridad, el servidor HTTP ejecuta el script " "como usuario \"nadie\", sin ningún privilegio especial. Sólo puede leer " "(escribir, ejecutar) archivos que todo el mundo puede leer (escribir, " "ejecutar). El directorio actual en tiempo de ejecución también es diferente " "(normalmente es el directorio cgi-bin del servidor) y el conjunto de " "variables de entorno también es diferente de lo que se obtiene al iniciar " "sesión. En particular, no cuente con la ruta de búsqueda del shell para " "ejecutables (:envvar:`PATH`) o la ruta de búsqueda del módulo Python (:" "envvar:`PYTHONPATH`) que se establecerá en cualquier cosa interesante." #: ../Doc/library/cgi.rst:431 msgid "" "If you need to load modules from a directory which is not on Python's " "default module search path, you can change the path in your script, before " "importing other modules. For example::" msgstr "" "Si necesita cargar módulos desde un directorio el cual no está en la ruta de " "búsqueda de módulos predeterminada de Python, puede cambiar la ruta en su " "script, antes de importar otros módulos. Por ejemplo::" #: ../Doc/library/cgi.rst:439 msgid "(This way, the directory inserted last will be searched first!)" msgstr "" "(¡De esta manera, el directorio insertado de último será buscado primero!)" #: ../Doc/library/cgi.rst:441 msgid "" "Instructions for non-Unix systems will vary; check your HTTP server's " "documentation (it will usually have a section on CGI scripts)." msgstr "" "Las instrucciones para sistemas que no son Unix pueden variar; consulte la " "documentación de su servidor HTTP (usualmente tendrá una sección sobre " "scripts CGI)." #: ../Doc/library/cgi.rst:446 msgid "Testing your CGI script" msgstr "Probando su script de CGI" #: ../Doc/library/cgi.rst:448 msgid "" "Unfortunately, a CGI script will generally not run when you try it from the " "command line, and a script that works perfectly from the command line may " "fail mysteriously when run from the server. There's one reason why you " "should still test your script from the command line: if it contains a syntax " "error, the Python interpreter won't execute it at all, and the HTTP server " "will most likely send a cryptic error to the client." msgstr "" "Desafortunadamente, un script CGI generalmente no se ejecutará cuando lo " "pruebe desde la línea de comandos, y un script que funcione perfectamente " "desde la línea de comandos puede fallar misteriosamente cuando se ejecuta " "desde el servidor. Hay una razón por la que debe probar el script desde la " "línea de comandos: si contiene un error de sintaxis, el intérprete de Python " "no lo ejecutará en absoluto y lo más probable es que el servidor HTTP envíe " "un error críptico al cliente." #: ../Doc/library/cgi.rst:455 msgid "" "Assuming your script has no syntax errors, yet it does not work, you have no " "choice but to read the next section." msgstr "" "Asumiendo que su script no tiene errores de sintaxis, pero este no funciona, " "no tiene más opción que leer la siguiente sección." #: ../Doc/library/cgi.rst:460 msgid "Debugging CGI scripts" msgstr "Depurando scripts de CGI" #: ../Doc/library/cgi.rst:464 msgid "" "First of all, check for trivial installation errors --- reading the section " "above on installing your CGI script carefully can save you a lot of time. " "If you wonder whether you have understood the installation procedure " "correctly, try installing a copy of this module file (:file:`cgi.py`) as a " "CGI script. When invoked as a script, the file will dump its environment " "and the contents of the form in HTML format. Give it the right mode etc., " "and send it a request. If it's installed in the standard :file:`cgi-bin` " "directory, it should be possible to send it a request by entering a URL into " "your browser of the form:" msgstr "" "En primer lugar, compruebe si hay errores de instalación triviales --- leer " "la sección anterior sobre la instalación cuidadosa de su script CGI puede " "ahorrarle mucho tiempo. Si se pregunta si ha entendido correctamente el " "procedimiento de instalación, intente instalando una copia de este archivo " "de módulo (:file:`cgi.py`) como un script CGI. Cuando se invoca como un " "script, el archivo cambiará su entorno y el contenido del formulario en " "formato HTML. Dele el modo correcto, etc., y envíe una solicitud. Si está " "instalado en el directorio estándar :file:`cgi-bin`, debería ser posible " "enviarle una solicitud introduciendo una URL en su navegador de la forma:" #: ../Doc/library/cgi.rst:477 msgid "" "If this gives an error of type 404, the server cannot find the script -- " "perhaps you need to install it in a different directory. If it gives " "another error, there's an installation problem that you should fix before " "trying to go any further. If you get a nicely formatted listing of the " "environment and form content (in this example, the fields should be listed " "as \"addr\" with value \"At Home\" and \"name\" with value \"Joe Blow\"), " "the :file:`cgi.py` script has been installed correctly. If you follow the " "same procedure for your own script, you should now be able to debug it." msgstr "" "Si esto da un error de tipo 404, el servidor no puede encontrar el script -- " "quizás necesite instalarlo en un directorio diferente. Si este da otro " "error, hay un problema con la instalación que debería intentar solucionar " "antes de continuar. Si obtiene una lista bien formateada del entorno y el " "contenido del formulario (en este ejemplo, los campos deberían estar " "listados como \"addr\" con el valor \"At Home\" y \"name\" con el valor " "\"Joe Blow\"), el script :file:`cgi.py` ha sido instalado correctamente. Si " "sigue el mismo procedimiento para su propio script, ya debería poder " "depurarlo." #: ../Doc/library/cgi.rst:486 msgid "" "The next step could be to call the :mod:`cgi` module's :func:`test` function " "from your script: replace its main code with the single statement ::" msgstr "" "El siguiente paso podría ser llamar a la función :func:`test` del módulo :" "mod:`cgi` de su script: reemplace su código principal con la declaración " "única ::" #: ../Doc/library/cgi.rst:491 msgid "" "This should produce the same results as those gotten from installing the :" "file:`cgi.py` file itself." msgstr "" "Esto debería producir los mismos resultados que los obtenidos al instalar el " "archivo :file:`cgi.py` en sí." #: ../Doc/library/cgi.rst:494 msgid "" "When an ordinary Python script raises an unhandled exception (for whatever " "reason: of a typo in a module name, a file that can't be opened, etc.), the " "Python interpreter prints a nice traceback and exits. While the Python " "interpreter will still do this when your CGI script raises an exception, " "most likely the traceback will end up in one of the HTTP server's log files, " "or be discarded altogether." msgstr "" "Cuando un script de Python normal lanza una excepción no controlada (por " "cualquier razón: de un error tipográfico en un nombre de módulo, un archivo " "que no se puede abrir, etc.), el intérprete de Python imprime un traceback " "sutil y sale. Aunque el intérprete de Python seguirá haciendo esto cuando " "el script CGI lance una excepción, lo más probable es que el traceback " "termine en uno de los archivos de registro del servidor HTTP o se descarte " "por completo." #: ../Doc/library/cgi.rst:501 msgid "" "Fortunately, once you have managed to get your script to execute *some* " "code, you can easily send tracebacks to the web browser using the :mod:" "`cgitb` module. If you haven't done so already, just add the lines::" msgstr "" "Afortunadamente, una vez que haya logrado que su script ejecute *algún* " "código, puede enviar fácilmente tracebacks al navegador web utilizando el " "módulo :mod:`cgitb`. Si aún no lo ha hecho, solo añada las líneas::" #: ../Doc/library/cgi.rst:508 msgid "" "to the top of your script. Then try running it again; when a problem " "occurs, you should see a detailed report that will likely make apparent the " "cause of the crash." msgstr "" "al principio de su script. Luego intente ejecutarlo de nuevo; cuando un " "problema ocurra, debería ver un informe detallado que probablemente muestre " "la causa del error." #: ../Doc/library/cgi.rst:512 msgid "" "If you suspect that there may be a problem in importing the :mod:`cgitb` " "module, you can use an even more robust approach (which only uses built-in " "modules)::" msgstr "" "Si sospecha que puede haber un problema al importar el módulo :mod:`cgitb`, " "puede usar un enfoque aún más robusto (que solo usa módulos integrados)::" #: ../Doc/library/cgi.rst:521 msgid "" "This relies on the Python interpreter to print the traceback. The content " "type of the output is set to plain text, which disables all HTML " "processing. If your script works, the raw HTML will be displayed by your " "client. If it raises an exception, most likely after the first two lines " "have been printed, a traceback will be displayed. Because no HTML " "interpretation is going on, the traceback will be readable." msgstr "" "Esto se basa en el intérprete de Python para imprimir el traceback. El tipo " "de contenido de la salida se establece en texto plano, lo que deshabilita " "todo el procesamiento HTML. Si el script funciona, el cliente mostrará el " "código HTML sin formato. Si lanza una excepción, lo más probable es que " "después que se hayan impreso las dos primeras líneas, se mostrará un " "traceback. Dado que no se está realizando ninguna interpretación HTML, el " "traceback será legible." #: ../Doc/library/cgi.rst:530 msgid "Common problems and solutions" msgstr "Problemas comunes y soluciones" #: ../Doc/library/cgi.rst:532 msgid "" "Most HTTP servers buffer the output from CGI scripts until the script is " "completed. This means that it is not possible to display a progress report " "on the client's display while the script is running." msgstr "" "La mayoría de servidores HTTP almacenan en búfer la salida de los scripts " "CGI hasta que el script esté completado. Esto significa que no es posible " "mostrar un reporte del progreso en la parte del cliente mientras que el " "script se esté ejecutando." #: ../Doc/library/cgi.rst:536 msgid "Check the installation instructions above." msgstr "Compruebe las instrucciones de instalación anteriores." #: ../Doc/library/cgi.rst:538 msgid "" "Check the HTTP server's log files. (``tail -f logfile`` in a separate " "window may be useful!)" msgstr "" "Verifique los archivos de registro (logs) del servidor HTTP. (¡Usar ``tail -" "f logfile`` en una ventana separada puede ser útil!)" #: ../Doc/library/cgi.rst:541 msgid "" "Always check a script for syntax errors first, by doing something like " "``python script.py``." msgstr "" "Siempre verifique un script para encontrar errores de sintaxis primero, " "haciendo algo como ``python script.py``." #: ../Doc/library/cgi.rst:544 msgid "" "If your script does not have any syntax errors, try adding ``import cgitb; " "cgitb.enable()`` to the top of the script." msgstr "" "Si su script no tiene ningún error sintáctico, pruebe añadiendo ``import " "cgitb; cgitb.enable()`` en la parte superior del script." #: ../Doc/library/cgi.rst:547 msgid "" "When invoking external programs, make sure they can be found. Usually, this " "means using absolute path names --- :envvar:`PATH` is usually not set to a " "very useful value in a CGI script." msgstr "" "Cuando se invoquen programas externos, asegúrese de que pueden ser " "encontrados. Generalmente esto significa usar nombres de ruta absolutos --- :" "envvar:`PATH` generalmente no se establece en un valor útil en un script CGI." #: ../Doc/library/cgi.rst:551 msgid "" "When reading or writing external files, make sure they can be read or " "written by the userid under which your CGI script will be running: this is " "typically the userid under which the web server is running, or some " "explicitly specified userid for a web server's ``suexec`` feature." msgstr "" "Al leer o escribir archivos externos, asegúrese de que puedan ser leídas o " "escritas por el userid por el que su script CGI se va a ejecutar: es típico " "que esto sea el userid bajo el que el servidor web se está ejecutando, o " "algún userid especificado explícitamente por la función ``suexec`` del " "servidor web." #: ../Doc/library/cgi.rst:556 msgid "" "Don't try to give a CGI script a set-uid mode. This doesn't work on most " "systems, and is a security liability as well." msgstr "" "No intente darle un modo set-uid a un script CGI. Esto no funciona en la " "mayoría de sistemas, además de ser un riesgo de seguridad." #: ../Doc/library/cgi.rst:560 msgid "Footnotes" msgstr "Notas al pie" #: ../Doc/library/cgi.rst:561 msgid "" "Note that some recent versions of the HTML specification do state what order " "the field values should be supplied in, but knowing whether a request was " "received from a conforming browser, or even from a browser at all, is " "tedious and error-prone." msgstr "" "Tenga en cuenta que algunas versiones recientes de las especificaciones de " "HTML establecen en qué orden se deben suministrar los valores de campo, pero " "saber si se recibió una solicitud de un navegador adaptado, o incluso desde " "un navegador siquiera, es tedioso y propenso a errores." #: ../Doc/library/cgi.rst:10 msgid "WWW" msgstr "WWW" #: ../Doc/library/cgi.rst:10 msgid "server" msgstr "server" #: ../Doc/library/cgi.rst:10 ../Doc/library/cgi.rst:389 #: ../Doc/library/cgi.rst:462 msgid "CGI" msgstr "CGI" #: ../Doc/library/cgi.rst:10 msgid "protocol" msgstr "protocol" #: ../Doc/library/cgi.rst:10 msgid "HTTP" msgstr "HTTP" #: ../Doc/library/cgi.rst:10 msgid "MIME" msgstr "MIME" #: ../Doc/library/cgi.rst:10 msgid "headers" msgstr "headers" #: ../Doc/library/cgi.rst:10 msgid "URL" msgstr "URL" #: ../Doc/library/cgi.rst:10 msgid "Common Gateway Interface" msgstr ":mod:`cgi` --- Soporte de Interfaz de Entrada Común (CGI)" #: ../Doc/library/cgi.rst:389 msgid "security" msgstr "security" #: ../Doc/library/cgi.rst:462 msgid "debugging" msgstr "debugging"