Change - Searching

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: Updated entry

Comment on This Data Unit