[pyar] Django querys

Alejandro Santos listas en alejolp.com
Dom Mar 31 23:47:14 ART 2013


2013/3/31 Ramiro Floydant <ramirotrvnt18 en gmail.com>:
> Me encontré con una función de búsqueda que anda perfecta, pero no pude
> asimilar del todo:
>
> def search(request):
>       query = request.GET.get("q", " ")

Esta línea de acá arriba invoca a éste método:

 https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.QueryDict.get

request.GET es un diccionario, y la función "get" es para obtener el
elemento con clave "q" del dict.

Fijate el detalle de que le pasa un segundo parámetro con un string "
", que es un string de UN espacio. Eso tiene como consecuencia que si
no existe el parámetro "q" en el request, le asigna un valor que no
significa nada pero que hace que entre en el if. (el string " " se
evalúa como True).

>
> El concepto que no logro entender es el del "if query". Justamente porque
> uso esa misma expresión en la plantilla y cumple otra función:
>

Fijate en la plantilla como viene el hilo de ejecución: el if query se
ejecuta solo si "results" es False. Eso quiere decir que la lista de
resultados es vacía, y puede ser porque a) lo que se buscó no aparece,
b) no se buscó nada. Si query tiene algo dentro estás en el primer
caso, si query es vacío estás en el segundo.

(se me ocurre que hay un bug acá, porque la ausencia del parámetro "q"
asignaría el string " " a query y en la plantilla se generaría el
primer caso cuando debería generar el segundo)


--
Alejandro Santos



More information about the pyar mailing list