Situation: Ich habe ein Formular, das für die Suche verwendet wird, und ich gebe dasselbe Formular auf der Ergebnisseite zurück, damit der Benutzer seine Ergebnisse filtern kann. Um den Müll-Input loszuwerden, habe ich eine clean_xxx-Methode implementiert.Django Best Practices: Wie man ein Formular bereinigt und rendert
Leider wird das Formular auf der Ergebnisseite mit der Mülleingabe zurückgegeben, obwohl es gereinigt wurde. Wie kann ich die sauberen Daten anzeigen lassen?
Hier sind ein paar Ideen:
- Im clean_xxx Methode, stellen Sie den self.data.xxx = cleaned_xxx Wert
- Reinitialize eine neue Form mit dem 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...
}
Vielen Dank für Ihre Hilfe.
Zeigen Sie Ihren Code: http://sscce.org/ – Marcin
Die Reinitialisierung sieht gut genug aus. Die erste Option ist ein Hack von einem gewissen Punkt. – ilvar
@Marcin Ich habe meinen Code für Sie vereinfacht zu überprüfen – Naqeeb