Форум сайта python.su
Здравствуйте, я ЧАЙНИК! Делаю уроки по учебнику Головатый и компания.
Вот такая вот фигня вначале функция проверяет параметр ‘q’ в request.GET
я не даю ему этот параметр, и функция НЕ РУГАЕТСЯ вот код
def search(request):# q находится в запросе формы метод GET error = False if 'q' in request.GET: #Убеждаемся, что параметр 'q' существует в request.GET q = request.GET["q"]#Присваиваем то, что нам передали в запросе if not q: error = True if len(q)>20: error = True else: books = Book.objects.filter(title__icontains=q) #filtr db return render_to_response('search_results.html', {'books': books, 'query': q}) return render_to_response('search_form.html', {'error': False})
<html> <head> <title> Поиск </title> </head> <body> {% if error %} <p style="color: red">Введите поисковый запрос!</p> {% endif %} <form action="" method="get"> <input type="text" name="iiii"> <input type="submit" value = "Найти"> </form> </body> </html>
Отредактировано quix (Апрель 28, 2013 22:51:14)
Офлайн
а в чем проблема?
На ваш взгляд, почему должна ругаться?
я не вижу тута ошиболк
Офлайн
Функция ждет ‘q’ а я ей пихаю
<input type="text" name="iiii">
Офлайн
quix
ну вот вам простой прием проверки: сделайте
def search(request):# q находится в запросе формы метод GET raise Exception()
value=request.GET.get('q')
Офлайн
quixфункция не ждет q. а лишь проверяет его наличие. если его нет, то по коду, ничего не будет.
Функция ждет ‘q’ а я ей пихаю
Офлайн
ilnurПоддерживаю
а в чем проблема?На ваш взгляд, почему должна ругаться?я не вижу тута ошиболк
JOHN_16Соглашусь , что в данной ситуации сначала лучше записать значение в переменную через метод словаря get(), а потом в условиях проверять эту же переменную. Но проверка словаря на то, имеет ли он данный ключ или нет - вполне себе используемый способ, да и человеку будет так понятнее(более явно видно).
К тому же вы не самым лучшим образом проверяете (ИМХО + документация)
Офлайн
Я передаю “левый” параметр
<input type="text" name="iiii">
Офлайн
Убери условие из кода функции представления в первом посте:
if 'q' in request.GET:
Отредактировано buddha (Апрель 29, 2013 19:09:20)
Офлайн
Делаю то по книжке. В книжке так сделано, как в первом посте только без iiii. Подсовываю iiii - не ругается…
Лана….
Спасибо.
Отредактировано quix (Апрель 29, 2013 19:32:37)
Офлайн
quix
Делаю то по книжке. В книжке так сделано, как в первом посте только без iiii. Подсовываю iiii - не ругается… Лана…. Спасибо.
Офлайн