Форум сайта python.su
если с mod_python работаете, можно попробовать входные фильтры.
про django не знаю, но говорят мощьная штука и фильтры должны быть?
Офлайн
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
Отредактировано (Дек. 8, 2009 10:28:44)
Офлайн
ravisenВ чем проблема в этом блоке после установки в ответе куки отобразить нужную страницу без передачи запроса джанге дальше?
if request.GET==“yes”:
Офлайн
regall
их ведь нужно не просто отобразить, а надо вызвать их обработчик. соответственно для каждого типа страницы - свой
Офлайн
Если куки не установлены: Можно вернуть HTTPResponseRedirect на эту же страницу с куками в заголовках, то есть во второй раз куки будут уже установлены, middleware сделает: return None и запрос пойдет дальше.
Офлайн
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
Офлайн
А сессии зачем придумали? :) Вся магия делается в мидлвари конечно (которая должна следовать после django.contrib.sessions.middleware.SessionMiddleware), а данные хранятся в сессии. И никаких велосипедов, джаваскриптов, редиректов и прочего не нужно…
(http://docs.djangoproject.com/en/dev/topics/http/sessions/#topics-http-sessions)
Офлайн
poltergeist
Просто хотелось бы, чтобы пользователя не каждый день спрашивали одно и тоже =) а хотя бы с периодичностью в месяц
Офлайн
Можно ведь просто подсмотреть как работают сессии.
ravisenСохранять куки надо не в process_request, а в process_response, т.е. нужно иметь два этих обработчика: первый проверяет, второй сохраняет.
Но возвращая None куки соответственно не сохраняется
Офлайн
ravisen
сессии и так имеют определённый срок жизни, и обычно не в 1 день)
Офлайн