首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django + HTMX:尽管存在strip=True,搜索表单仍未删除尾随空格&即使视图中调用了条带()

Django + HTMX:尽管存在strip=True,搜索表单仍未删除尾随空格&即使视图中调用了条带()
EN

Stack Overflow用户
提问于 2022-02-19 00:45:08
回答 1查看 85关注 0票数 0

由于一些奇怪的原因,当hx-word到/word-search/时,我的表单没有被清理。这导致搜索不返回结果,尽管它实际上存在于db中。

表格:

代码语言:javascript
复制
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...'
            }
        )
    )

查看:

代码语言:javascript
复制
@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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-20 06:44:56

您没有使用Django窗体接口,所以Django不能应用过滤函数。您必须通过调用form.is_valid()来验证表单。验证后的数据将在form.cleaned_data中显示。

代码语言:javascript
复制
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过滤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71181406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档