Hola, me estoy metiendo en django y esto me está dando dolor de cabeza. Estoy tratando de obtener una variable GET simple. URL es site.com/search/?q=search-termCómo comprobar si request.GET var es None?
Mi opinión es:
def search(request):
if request.method == 'GET' and 'q' in request.GET:
q = request.GET.get('q', None)
if q is not None:
results = Task.objects.filter(
Q(title__contains=q)
|
Q(description__contains=q),
)
...return...
else:
...
else:
...
Las consultas de búsqueda como: mysite.com/search/? (sin q) pasa el primero si es correcto.
El problema está en consultas como mysite.com/search/?q=. No quedan atrapados por si q no es ninguno:
Entonces, la respuesta breve sería ¿Cómo puedo verificar q == ''? (Ya he intentado '', ninguno, etc., fue en vano.)
Un simple ** if q ** en lugar de ** si q no es None (o '') ** hizo el truco. Alguien tiene una explicación para esto? – Nacho
En general, debe tener mucho cuidado al usar el operador 'is' en Python. Normalmente quiere una prueba de igualdad ('=='), no una prueba de identidad ('es'). Una secuencia de pruebas de longitud no nula 'Verdadero '. –