Situación: Tengo un formulario que se utiliza para la búsqueda y devuelvo el mismo formulario en la página de resultados para que el usuario filtre sus resultados. Para deshacerse de la entrada de basura, he implementado un método clean_xxx.Mejores prácticas de Django: Cómo limpiar y representar un formulario
Desafortunadamente, el formulario se devuelve en la página de resultados con la entrada de basura aunque se haya limpiado. ¿Cómo puedo obtener la información limpia para mostrar?
Aquí están algunas ideas:
- En el método clean_xxx, establecer el valor self.data.xxx = cleaned_xxx
- Fecha un nuevo formulario con el cleaned_data.
forms.py:
SearchForm:
def clean_q(self):
q = self.cleaned_data.get('q').strip()
# Remove Garbage Input
sanitized_keywords = re.split('[^a-zA-Z0-9_ ]', q)
q = "".join(sanitized_keywords).strip()
#TODO: Fix
self.data['q'] = q
return q
views.py
search_form = SearchForm(params, user=request.user)
if search_form.is_valid():
# Build the Query from the form
# Retrieve The Results
else:
# For errors, no results will be displayed
_log.error('Search: Form is not valid. Error = %s' %search_form.errors)
response = {
'search_form': search_form...
}
Gracias por su ayuda.
Muestre su código: http://sscce.org/ – Marcin
La reinicialización parece lo suficientemente buena. La primera opción es un truco desde algún punto. – ilvar
@Marcin He simplificado mi código para que lo revises – Naqeeb