由于一些奇怪的原因,当hx-word到/word-search/时,我的表单没有被清理。这导致搜索不返回结果,尽管它实际上存在于db中。
表格:
class WordSearchForm(forms.Form):
word_search = forms.CharField(
strip=True,
widget=forms.TextInput(
attrs={
'class': 'form-control',
'hx-post': '/word-search/',
'hx-target': '#results',
'hx-trigger': 'keyup changed delay:500ms',
'placeholder': 'Search by word...'
}
)
)查看:
@require_http_methods(['POST'])
def word_search(request):
if request.META.get('HTTP_HX_REQUEST'):
results = None
search_text = request.POST.get('word_search', None)
print(search_text.endswith(' ')) => True
if search_text is not None:
...
word = search_text.strip() -> Even this does not work
sentences = KWord.objects.filter(word__word=word)发布于 2022-02-20 06:44:56
您没有使用Django窗体接口,所以Django不能应用过滤函数。您必须通过调用form.is_valid()来验证表单。验证后的数据将在form.cleaned_data中显示。
if request.META.get('HTTP_HX_REQUEST'):
form = WordSearchForm(request.POST)
if form.is_valid():
# Now strip has been applied to `word_search` field
search_text = form.cleaned_data['word_search']
...关于第二个问题:检查filter(word__word=word)过滤器。__word 字段查找不存在,所以我猜HTMX请求会抛出500个内部服务器错误,但是前面没有错误处理。也许你想做一个word__contains过滤。
https://stackoverflow.com/questions/71181406
复制相似问题