Diccionario Getitem

Objeto HttpRequest

HttpRequest representa una solicitud HTTP separada del cliente.

Las propiedades de la instancia HttpRequest contienen la información más importante sobre esta solicitud (consulte la Tabla H-1 para obtener más detalles). Todas las propiedades excepto la sesión deben considerarse de solo lectura.

Tabla h-1. Atributos del objeto httprequest

Atributos

Descripción

Ruta es una cadena que representa la dirección completa de la página que envía la solicitud, excluyendo el nombre de dominio, como "/música/bandas/the_beatles/”.

Método

Representa el método HTTP utilizado para enviar la solicitud. Siempre está en mayúscula. Por ejemplo:

if método de solicitud = ='GET':

Haz algo ()

elif método de solicitud = ='POST':

p>

do_something_else()

Obtiene un objeto similar a un diccionario que contiene toda la información para los parámetros HTTP GET. Consulte la documentación de QueryDict.

Publicar

Un objeto similar a un diccionario que contiene toda la información sobre los parámetros POST de HTTP. Consulte la documentación de QueryDict.

Las solicitudes enviadas mediante POST pueden contener un diccionario POST vacío, es decir, los formularios enviados mediante el método POST pueden no contener datos. Entonces si es necesario. POST no debe usarse para juzgar el uso del método POST, pero si request.method == "POST" (consulte la entrada del método en la tabla).

Nota: Las publicaciones no contienen información de carga de archivos. Ver documentación.

Solicitudes

Para mayor comodidad, este es un objeto similar a un diccionario en el que se busca primero POST y luego GET. Inspirado en $_REQEUST de PHP.

Por ejemplo, si GET = {"name":"john"}, POST = {"age":'34"}, entonces SOLICITUD["nombre"] será "Juan", SOLICITUD[ "edad"] será "34".

Se recomienda encarecidamente utilizar GET y POST en lugar de REQUEST. Esto es para lograr compatibilidad con versiones posteriores y una representación más clara.

Las cookies son un todo. -inclusive Un diccionario Python estándar de COOKIES. Las claves y los valores son cadenas; consulte el Capítulo 12 para obtener más información sobre el uso de cookies.

Archivos

Un diccionario de clases que contiene todos los archivos cargados. Objeto. La clave del archivo proviene de

Nombre de archivo: una cadena que representa el nombre del archivo cargado.

Tipo de contenido: el tipo de contenido del archivo cargado: el contenido original. archivo subido.

Tenga en cuenta que el archivo solo está disponible si el método solicitado es POST y se envía.

Metaverso

Contiene todo Un diccionario Python estándar de válido. La información del encabezado HTTP es específica del cliente y del servidor. A continuación se muestran algunos ejemplos:

Longitud del contenido

Tipo de contenido

QUERY_STRING: Cadena de solicitud sin procesar

DIRECCIÓN remota: dirección IP del cliente

REMOTE_HOST: nombre de host del cliente

SERVER_NAME. >SERVER_PORT: Número de puerto del servidor.

Cualquier información de encabezado HTTP válida en META es una clave con el prefijo HTTP_, por ejemplo:

HTTP_accept_encoding

HTTP_accept_ Language

HTTP_HOST: Información del encabezado del host enviada por el cliente.

HTTP_REFERER: La página apuntada, si existe.

HTTP_USER_AGENT: Cadena de agente de usuario del cliente.

http_x_bender: el valor de la información del encabezado de x-bender (si está configurado).

Usuario

django .contrib .auth models . Si el usuario actual no ha iniciado sesión, el usuario se configurará en una instancia de Django. contrib.auth.models. Usuarios anónimos. Se pueden distinguir de is_authenticated():

if request . is_authenticated():

# Haz algo por el usuario que ha iniciado sesión.

En caso contrario:

#Haz algo por los usuarios anónimos.

Los usuarios sólo son válidos cuando Django activa el AuthenticationMiddleware.

Consulte el Capítulo 12 para obtener detalles completos sobre autenticación y usuarios.

La sesión es un objeto similar a un diccionario legible y grabable que representa la sesión actual. Sólo válido si Django activa el soporte de sesión. Consulte el Capítulo 12.

Publicar datos sin procesar. Para procesamiento de datos complejos.

El objeto de solicitud también contiene algunos métodos útiles, como se muestra en la Tabla H-2.

Tabla H-2. Métodos de HttpRequest

Método

Descripción

_ _ getitem _ _(clave)

Solicitar el valor GET/POST del dado clave, primero buscando POST, luego GET. Si la clave no existe, se genera la excepción KeyError.

Este método permite al usuario acceder a una instancia de HttpRequest accediendo al diccionario.

Por ejemplo, solicitar ["foo"] es lo mismo que verificar la solicitud. Emita ["foo"] antes de verificar la solicitud. OBTENER["foo"].

Has_key() devuelve Verdadero o Falso, indicando si se debe realizar la solicitud. Obtener o solicitar. POST contiene la clave proporcionada.

Get_full_path() devuelve la ruta, anexada a la cadena de solicitud si es válida. Por ejemplo "/música/bandas/the _ beats/?print=true".

Is_secure() devolverá True si la solicitud es segura. En otras palabras, la solicitud se envía como HTTPS.

Objeto QueryDict

En el objeto HttpRequest, los atributos GET y POST son django.http.QueryDict QueryDict es una clase similar a un diccionario diseñada para manejar múltiples valores con una clave. Cuando se trabaja con algunos elementos en formularios HTML, especialmente

Translation....

Las instancias de QueryDict son inmutables a menos que se cree una copia copy(). Es decir, los atributos solicitados. Publicar y solicitar. GET no se puede cambiar directamente.

QueryDict implementa todos los métodos de diccionario estándar porque es una subclase de Dictionary. Todo lo que difiere del mismo se recoge en la Tabla H-3.

Tabla H-3.

La diferencia entre diccionarios de consulta y diccionarios estándar

Los métodos

son diferentes de los diccionarios estándar.

__getitem__ es lo mismo que un diccionario. Sin embargo, cuando una clave tiene varios valores, __getitem__() devuelve el último valor.

__setitem__ establece el valor de la clave dada en [valor] (una lista de Python con un solo elemento de valor). Tenga en cuenta que solo se puede llamar la variable QueryDict (creada por copy()) porque tiene efectos secundarios en otras funciones del diccionario.

Get() Si una clave tiene varios valores, como __getitem__, get() devolverá el último valor.

Update()

Este parámetro es un diccionario de consulta o un diccionario estándar. A diferencia de la actualización estándar del diccionario

, este método *agrega* en lugar de reemplazar contenido:

gt gt gtq = query dict('a = 1')

gt gt gtq = q . copy() #Conviértelo en una variable.

gt gt gtq .actualizar ({"a": "2"})

gt gt gtq . ', '2']

gt gt gtq【'a'】#Devuelve el último valor.

['2']

Items()

Similar al método items() en el diccionario estándar, excepto que devuelve algo como _ _ getitem ()_ _El último valor es así:

gt gt gtq = query dict('a=1 amp; a=2 ampa=3')

gt gt gt question item ( )

[('a', '3')]

Values() es lo mismo que el método value() en el diccionario estándar, excepto que devuelve algo como _ _ getitem() _ _El último valor como este.

Además, QueryDict tiene los métodos enumerados en la Tabla H-4.

Tabla H-4. Otros métodos de consulta (que no pertenecen al diccionario)

Método

Descripción

Copy() devuelve una copia del objeto usando copy.deepcopy() del estándar Python biblioteca. Una copia es mutable, es decir, puedes cambiar su valor.

getlist(key) devuelve los datos de la clave solicitada como una lista de Python. Si la clave no existe, se devuelve una lista vacía. Se garantiza que devolverá algún tipo de lista.

set list(key, list_) establece el valor clave de la clave dada en list_ (a diferencia de __setitem__()).

appendlist(key, item) agrega un elemento a la lista asociada con la clave.

setlist default(key, l) es lo mismo que setdefault, excepto que su segundo parámetro es una lista en lugar de un valor.

List()

Similar a items(), excepto que devuelve todos los valores para cada miembro del diccionario en forma de lista. Por ejemplo:

gt gt gtq = query dict('a = 1 amp; a = 2 ampa = 3')

gt gt gt lista de preguntas ()

[('a',['1','2','3')]]

Urlencode() devuelve una cadena de datos en el formato de cadena solicitado (por ejemplo, "A = 2 ; b=3ampb=5").

Un ejemplo completo.

Por ejemplo, dado el siguiente formulario HTML:

lt form action="/foo/bar/" método="post" gt

lt input; escriba ="text" name="your_name"/gt;

seleccione multiple="multiple" name="bands" gt;

seleccione la opción value="Beatles" gt; Los Beatleslt/option gt;

ltoption value="who" gt;Wholt/option gt;

ltoption value="zombie" gtzombielt/ option gt;

lt/select gt;

lt tipo de entrada="enviar"/gt.

lt/form gt;

Si el usuario ingresa "John Smith" en su_nombre y selecciona The Beatles and Zombies en el cuadro de selección múltiple, entonces el objeto de solicitud de Django es el siguiente. :

gt gt gt solicitud. Obtener

{}

solicitud gt gt gt. Publicación

{'your_name': ['John Smith'], 'bands': ['Beatles', 'Zombies']}

gt gt gt request. Publica [‘tu nombre‘]

John Smith

gt gt gt solicitud. Publicar solicitud de [‘Banda‘]

Zombie

gt gt gt. POST.getlist("Banda")

["Beatles", "Zombie"]

gt gt gt solicitud. post .get('tunombre','adrian')

John Smith

gt gt gt solicitud. post.get('campo inexistente', 'persona sin adónde ir')

"El que no tiene adónde ir"

Tenga en cuenta al usar:

Obtener, publicar, cookies, archivos, meta, solicitudes, raw_post_data y el usuario se cargan de forma diferida. Es decir, Django no gasta recursos en calcular estos valores de propiedad a menos que se acceda a ellos mediante código.