Created on Oct. 17, 2012, 9:53 p.m. by Hevok & updated on Oct. 17, 2012, 10:01 p.m. by Hevok
A basic search function that passes an initial value could look like this: ::
¶
¶
def search(request, q=None):
¶
if request.POST:
¶
from = SearchForm(request.POST)
¶
if form.is_valid():
¶
q = form.cleaned_data['q']
¶
url = reverse('search_results', args=(q,))
¶
return HttpResponseRedirect(url)
¶
if q is None:
¶
form = SearchForm()
¶
else:
¶
form = SearchForm(initial={'q': q})
¶
return render_to_response('search.html', {'form': form})
¶
¶
For search page its good to use a GET form and maintain state in the URL: ::
¶
¶
# views.py
¶
def search(request):
¶
q = request.GET.get('q', '').strip()
¶
results = get(q)
¶
render_to_response("search.html", {'q': q, 'results': results})
¶
¶
# search.html
¶
<form method="GET" action=".">
¶
<p><input type="test" value="{{ q }}" .? <input type="submit" value="Search" /></p>
¶
{% if q %}
¶
{% if results %}
¶
{% for entry in results %}
¶
{{ entry }}
¶
{% endfor %}
¶
{% else %}
¶
<p>No results</p>
¶
{% endif %}
¶
{% endif %}
¶
</form>
Comment on This Data Unit