Tình huống: Tôi có biểu mẫu được sử dụng cho tìm kiếm và tôi trả về cùng một biểu mẫu trên trang kết quả để người dùng lọc kết quả của họ. Để loại bỏ đầu vào rác, tôi đã thực hiện một phương thức clean_xxx.Thực tiễn tốt nhất Django: Cách làm sạch và hiển thị biểu mẫu
Thật không may, biểu mẫu được trả lại trên trang kết quả với đầu vào rác ngay cả khi nó được làm sạch. Làm thế nào tôi có thể nhận được dữ liệu sạch sẽ để hiển thị?
Dưới đây là một vài ý tưởng:
- Trong phương pháp clean_xxx, thiết lập các self.data.xxx = giá trị cleaned_xxx
- reinitialize một hình thức mới với 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...
}
Nhờ sự giúp đỡ của bạn.
Hiển thị mã của bạn: http://sscce.org/ – Marcin
Bắt đầu lại có vẻ đủ tốt. Tùy chọn đầu tiên là một hack từ một số điểm. – ilvar
@Marcin Tôi đã đơn giản hóa mã của tôi để bạn có thể xem xét – Naqeeb