我在所有搜索中都使用了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)
答案 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'),