【问题标题】:Django search form configurationDjango 搜索表单配置
【发布时间】:2019-06-05 18:35:56
【问题描述】:

我正在实现一个搜索功能。如果我只是在每个视图中执行“if search”并在每个页面上呈现它,我可以让它正常工作,但我知道有更好的方法。我希望搜索提交按钮呈现结果页面。我可以在 URL 中看到搜索请求,但为什么我的搜索功能没有被调用?

我尝试将“action”属性从表单类移动到按钮类再到表单控件类。我尝试用 href 属性替换 action 属性。它似乎没有运行我的功能。

path('results/', views.search, name='search'),


def search(request):
print('here!')
eqs = Equipment.objects.all()
locs = Location.objects.all()
if 'search' in request.GET:
    search_term = self.request.GET['search']
#    searching = Equipment.objects.filter(name__icontains=search_term)
    searching = sorted(
        chain(eqs, locs)
    )
    context['search_term'] = search_term
    context['searching'] = searching
return render(
    request,
    'results.html',
    context = {
        'search_term': search_term,
        'searching': searchin,
    }
    )


<form class="form-inline my-2 my-lg-0" action="{% url 'search' %}">
    <input class="form-control mr-sm-2"
           type="search"
           placeholder="Search"
           aria-label="Search"
           name="search">
    <button class="btn btn-outline-success my-2 my-sm-0 search-button"   role="button" type="submit">Search</button>
  </form>'''

我没有收到任何错误,正在捕获搜索字段,但我只是停留在页面上并且该功能似乎没有运行。

【问题讨论】:

    标签: django search bootstrap-4


    【解决方案1】:

    您的表单正在发送POST,然后您尝试在视图中从request.GET 检索值。您需要在表单中添加method="GET"

    您可以在以下位置了解有关表单数据的更多信息:https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data#The_GET_method

    您可以通过以下方式了解更多关于 Django 请求处理的信息:https://docs.djangoproject.com/en/2.2/ref/request-response/#httprequest-objects

    编辑:进一步阅读您的问题并查看您的代码。它来自于在您的提交按钮中有role="button"。改变它,你应该很高兴。这个问题分享了更多信息:Do I need role="button" on a <button>?(虽然这也可能是错误的)获取控制台日志或其他东西真的很有帮助。

    【讨论】:

    • 您的编辑是正确的。我确信我从 bootstrap 4 文档中选择了 role="button" 并包含它,诚然,没有完全理解它。谢谢你让我理顺。干得好!
    猜你喜欢
    • 2011-12-08
    • 2018-07-11
    • 1970-01-01
    • 2023-03-23
    • 2014-03-17
    • 2011-05-17
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多