状況:検索に使用するフォームがあり、ユーザーが結果ページをフィルタリングするために結果ページに同じフォームを返します。ガベージ入力を取り除くために、私はclean_xxxメソッドを実装しました。Djangoベストプラクティス:フォームのクリーンアップとレンダリング方法
残念ながら、フォームはクリーニングされてもガベージ入力とともに結果ページに返されます。きれいなデータを表示するにはどうすればいいですか?ここで
はいくつかのアイデアです:clean_xxx方法で
- 、再初期化に
- cleaned_dataで新しいフォームをself.data.xxx = cleaned_xxx値を設定します。
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...
}
感謝。
コードを表示:http://sscce.org/ – Marcin
再初期化で十分です。最初のオプションは、ある点からのハックです。 – ilvar
@Marcin私はあなたのためにコードを簡素化しました – Naqeeb