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

ravisen
Но возвращая None куки соответственно не сохраняется
Сохранять куки надо не в process_request, а в process_response, т.е. нужно иметь два этих обработчика: первый проверяет, второй сохраняет.
slav0nic
ravisen
сессии и так имеют определённый срок жизни, и обычно не в 1 день)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB