Форум сайта python.su
Вопрос новичка.
На сколько я понял, ф-ии представления вызываются при переходе на определённые url (зависимость прописывается в urls.py). Можно ли вызвать нужную мне ф-ию без перехода куда-либо? Т.е. есть страница, на которой я добавляю записи в БД, жму кнопку, которая вызывает нужную мне ф-ию, добавляющую эти данные в БД, я остаюсь на этой же странице. Какой механизм используется для реализации такого функционала?
Спасибо.
Офлайн
Аяксом сделайте.
Только про переход на определенный урл, Вы наверное недопоняли.
Вам урл придется по любому сделать для аякс-запроса.
Просто добавляете записи на странице в БД(полагаю форма), сериализуете ее, делаете ajax post(на этот самый урл, там внутри вьюхи добавляется уже реально в БД и идет ответ тоже json). На странице ловите ответ в этом же скрипте, можно при этом прислать и кусочек html и добавить его на страницу, чтобы на клиенте данные тоже добавленными выглядели.
Я вот тут свой вариант про аякс писал, но это для формы
http://python.su/forum/topic/20799/
А если без формы, то вьюха будет еще проще
def add_data(request): try: # тут обрабатываем полученные данные. # даже если данные пришли с формы можете к ним обращаться request.REQUEST['параметр'] payload = {'success': True} except: payload = {'success': False} return HttpResponse(json.dumps(payload, cls=LazyEncoder), content_type='application/json')
Офлайн
Спасибо, попробую.
А если мне ответ от сервера не нужен, тоже аяксом или не обязательно?
Офлайн
А как это “ответ от сервера не нужен”?
По-моему так неправильно. Подтверждение о успехе или ошибке обязательно надо получать.
Офлайн
Ну да, я имел в виду, что выводить его мне никуда не нужно.
Офлайн
terrribleЭто уже проблемы клиентской стороны. Если Ваша вьюха не будет вообще возвращать HttpResponse, Джанга будет ругаться на ошибку. Возвращайте пустой HttpResponse.
Ну да, я имел в виду, что выводить его мне никуда не нужно.
Офлайн
Ну возвращайте success=True хотя бы. Если ответа не будет, этот скрипт все равно будет ожидать ответа от сервера.
А сбрасывать соединие- это явно плохой тон.
Офлайн
Я наверное что-то недопонимаю:
ну вот делаю я post на url по которому запускается нужная ф-ия представления, всё ок, но только ведь осущестляется загрузка этой страницы, которую в пост вписывал. Так как выполнить запрос, не переходя никуда?
Отредактировано terrrible (Фев. 28, 2013 12:02:55)
Офлайн
Во-первых, вовсе не обязательно, чтобы сервер возвращал HTML-страницу. Главное, чтобы он вернул валидный HttpResponse.
Во-вторых, если пост отправляешь аяксом, то по получению ответа клиентская сторона не перезагружает страницу, а передает скрипту полученные данные. Что с ними будут делать твой скрипт, твои проблемы. Что ты передашь клиенту в качестве данных, тоже твои проблемы, можешь не передавать ничего.
Вы вообще удосужились хоть что-то прочитать про AJAX?
Офлайн
FishHook
Во-первых, вовсе не обязательно, чтобы сервер возвращал HTML-страницу. Главное, чтобы он вернул валидный HttpResponse.Во-вторых, если пост отправляешь аяксом, то по получению ответа клиентская сторона не перезагружает страницу, а передает скрипту полученные данные. Что с ними будут делать твой скрипт, твои проблемы. Что ты передашь клиенту в качестве данных, тоже твои проблемы, можешь не передавать ничего.Вы вообще удосужились хоть что-то прочитать про AJAX?
Офлайн