Пишу очень простой формы поиска в Django

поэтому я пытаюсь сделать что-то очень простое. Я хочу ввести термин в поле поиска и отобразить его на результирующей странице.

мой HTML для формы

<form method="get" action="/results/" class="navbar-form pull-right">
<input type="text" id="searchBox" class="input-medium search-query" name="q" placeholder="Search">
<input type="submit" class="btn" value="Search" >
</form>

views.py выглядит так:

def search(request):
    query = request.GET['q']
    t = loader.get_template('template/results.html')
    c = Context({ 'query': query,})
    return HttpResponse(t.render(c))

и, наконец, шаблон результата содержит:

<div>You searched for: {{ query }} </div>

вот urls.py

urlpatterns = patterns('',
url(r'^home/$', 'search.views.home'),
url(r'^results/$', 'search.views.results'),

ничего не появляется в {{ query }} пространство.

1 ответов


Ok, поэтому действие обработки поиска в вашем views.py должен быть search но как я и подозревал в своем urls.py вы не называете search метод в любом месте.

где вы выполняете search способ?

URL-адреса должны быть такими:

urlpatterns = patterns('',
url(r'^home/$', 'search.views.home'),
url(r'^results/$', 'search.views.search'),
# or at least have a url for the search view

обратите внимание на атрибут action в вашей форме

это action="/results/". Это означает, что представление результата-это тот, кто должен обрабатывать форму. Вы также можете изменить это на action="/search/" и ваши URL-адреса так:

urlpatterns = patterns('',
url(r'^home/$', 'search.views.home'),
url(r'^results/$', 'search.views.results'),
url(r'^search/$', 'search.views.search'),