可以使用模板表单进行搜索工作

时间:2015-08-24 15:31:36

标签: python django forms django-forms

我在所有搜索中都使用了crispy-forms,但在这个中我需要使用模板表单,我不知道我的代码有什么问题&因为我在其他项目中有相同的代码,它工作正常,我不知道是否是Django版本,目前我使用的是1.8。我得到的错误是找不到页面(404),我找不到网址。这里我的代码希望你能帮助我。我在网址中使用q和param,但都没有。

urls.py

url(r'^search/(?P<param>\S+)$', permission_required('agenda.change_agenda', login_url='/no_access')(SearchContact.as_view()), name='searchcontact'),

template_form.html

<form class="well form-search" action="/search/" method="get">
  <input type="text" class="input-medium search-query" name="param">
  <button type="submit" class="btn">Search</button>
</form>

views.py

class SearchContact(ListView):
    template_name = 'agenda_contacts.html'

    def get_queryset(self):
        query = self.request.GET.get('param')
        return Agenda.objects.filter(name=param)

1 个答案:

答案 0 :(得分:0)

你的正则表达式

r'^search/(?P<param>\S+)$

匹配/search/hello/search/my-search等网址。

但是,您的搜索表单会在GET参数中发送搜索字词,例如/search/?param=hello/search/?param=my-search

在urls.py中未捕获GET参数。您可以在视图中使用request.GET访问它们。正如您所做的那样。

因此,您应该从正则表达式中删除param,并将您的网址格式更改为以下内容。

url(r'^search/$', permission_required('agenda.change_agenda', login_url='/no_access')(SearchContact.as_view()), name='searchcontact'),