Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » добавить предобработчик для всех страниц [RSS Feed]

#1 Дек. 7, 2009 23:01:02

pioner
От:
Зарегистрирован: 2009-10-21
Сообщения: 146
Репутация: +  0  -
Профиль   Отправить e-mail  

добавить предобработчик для всех страниц

если с mod_python работаете, можно попробовать входные фильтры.
про django не знаю, но говорят мощьная штука и фильтры должны быть?



Офлайн

#2 Дек. 8, 2009 10:02:17

ravisen
От:
Зарегистрирован: 2009-12-03
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

добавить предобработчик для всех страниц

slav0nic
Это код из мидлвари:

class check_cookie:
def process_request(self, request):
if 'activate' in request.GET:
if request.GET['activate']=="yes":
response = HttpResponse();
response.set_cookie("cookie_age","yes", max_age=30*24*60*60)
return response
else:
return render_to_response("you_are_small.html")

if "cookie_age" in request.COOKIES:
if request.COOKIES["cookie_age"] == "yes":
return None
else:
return render_to_response("how_old_are_you_new.html", {"cookie_last_page":request.get_full_path()})
else:
return render_to_response("how_old_are_you_new.html", {"cookie_last_page":request.get_full_path()})
Проблема именно в части
if request.GET['activate']=="yes":
response = HttpResponse();
response.set_cookie("cookie_age","yes", max_age=30*24*60*60)
return response
Как сохранить куки, но чтобы вернуть None или как-то продолжить дальше обработку?



Отредактировано (Дек. 8, 2009 10:28:44)

Офлайн

#3 Дек. 8, 2009 11:30:59

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

добавить предобработчик для всех страниц

ravisen
if request.GET==“yes”:
В чем проблема в этом блоке после установки в ответе куки отобразить нужную страницу без передачи запроса джанге дальше?



Офлайн

#4 Дек. 8, 2009 12:57:02

ravisen
От:
Зарегистрирован: 2009-12-03
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

добавить предобработчик для всех страниц

regall
их ведь нужно не просто отобразить, а надо вызвать их обработчик. соответственно для каждого типа страницы - свой



Офлайн

#5 Дек. 8, 2009 13:23:27

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

добавить предобработчик для всех страниц

Если куки не установлены: Можно вернуть HTTPResponseRedirect на эту же страницу с куками в заголовках, то есть во второй раз куки будут уже установлены, middleware сделает: return None и запрос пойдет дальше.



Офлайн

#6 Дек. 8, 2009 14:14:35

ravisen
От:
Зарегистрирован: 2009-12-03
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

добавить предобработчик для всех страниц

regall
имеется ввиду вот так?

		if request.GET['activate']=="yes":
response = HttpResponseRedirect(request.get_full_path())
response.set_cookie("cookie_age","yes", max_age=30*24*60*60)
return response



Офлайн

#7 Дек. 8, 2009 23:19:27

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

добавить предобработчик для всех страниц

А сессии зачем придумали? :) Вся магия делается в мидлвари конечно (которая должна следовать после django.contrib.sessions.middleware.SessionMiddleware), а данные хранятся в сессии. И никаких велосипедов, джаваскриптов, редиректов и прочего не нужно…
(http://docs.djangoproject.com/en/dev/topics/http/sessions/#topics-http-sessions)



Офлайн

#8 Дек. 9, 2009 11:52:52

ravisen
От:
Зарегистрирован: 2009-12-03
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

добавить предобработчик для всех страниц

poltergeist
Просто хотелось бы, чтобы пользователя не каждый день спрашивали одно и тоже =) а хотя бы с периодичностью в месяц



Офлайн

#9 Дек. 9, 2009 12:39:54

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

добавить предобработчик для всех страниц

Можно ведь просто подсмотреть как работают сессии.

ravisen
Но возвращая None куки соответственно не сохраняется
Сохранять куки надо не в process_request, а в process_response, т.е. нужно иметь два этих обработчика: первый проверяет, второй сохраняет.



Офлайн

#10 Дек. 9, 2009 15:00:02

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

добавить предобработчик для всех страниц

ravisen
сессии и так имеют определённый срок жизни, и обычно не в 1 день)

Офлайн

  • Начало
  • » Django
  • » добавить предобработчик для всех страниц[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version