|
Оглавление
|
Как и в предыдущих главах, мы показали вам самый простой пример. Теперь рассмотрим некоторые проблемы и покажем как их можно решить.
Во-первых, наша обработка пустой строки в
Гораздо лучше будет отобразить форму снова, вывести сообщение об ошибке над ней — пользователь сможет немедленно исправить её и сразу отправить данные. Простейшим способом сделать это является повторная обработка шаблона, вот так: from django.http import HttpResponse
from django.shortcuts import render_to_response
from mysite.books.models import Book
def search_form(request):
return render_to_response('search_form.html')
def search(request):
if 'q' in request.GET and request.GET['q']:
q = request.GET['q']
books = Book.objects.filter(title__icontains=q)
return render_to_response('search_results.html',
{'books': books, 'query': q})
else:
return render_to_response('search_form.html', {'error': True})
(Отметьте, что мы включили сюда
Итак, мы доработали <html>
<head>
<title>Search</title>
</head>
<body>
{% if error %}
<p style="color: red;">Please submit a search term.</p>
{% endif %}
<form action="/search/" method="get">
<input type="text" name="q">
<input type="submit" value="Search">
</form>
</body>
</html>
Мы по-прежнему можем использовать этот шаблон из нашего
оригинального представления,
Учитывая сделанные изменения, появляется вопрос: действительно
ли мы нуждаемся в представлении
def search(request):
error = False
if 'q' in request.GET:
q = request.GET['q']
if not q:
error = True
else:
books = Book.objects.filter(title__icontains=q)
return render_to_response('search_results.html',
{'books': books, 'query': q})
return render_to_response('search_form.html',
{'error': error})
Теперь, если пользователь посетит /search/ без
указания GET параметров, он увидит поисковую
форму без сообщения об ошибке. Если пользователь передаст форму
с пустым значением Мы можем сделать финальное улучшение этого приложения, удалим избыточность. После свёртывания двух представлений в единое стало необязательным указывать URL, по которому надо отправлять данные формы. Вместо строки: <form action="/search/" method="get"> можно писать так: <form action="" method="get">
Параметр action="" означает «Отправь форму по URL текущей страницы.» Учитывая это изменение, больше не требуется изменять action при переходе формы на другой URL. |
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
1049
49
130
71
Версия книги
1.0
2.0
Версия 2.0 в процессе перевода!
Мой луч
Многообразие света
Полезное
Актуальные вакансии,
Python работа
для python-разработчиков.
Скачать в формате
CHM от 2 сентябряЗаказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта. Чем чаще заказываете — тем больше перевожу. Русская группа
Ускорить процесс перевода!
R130494980980
Z425285133788 E112528079659 U327380922061 Книга помогла реализовать:
|
| © 2008-2009 Ruslan Popov @ gmail.com | Powered by Django 1.1 beta 1 SVN-11114 |