Пишу очень простой формы поиска в 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'),