2015-07-20 3 views
0

можно получить значение cookie без запроса. У меня есть список выпусков завоеваний на моей странице. Если пользователь выбирает один из выпусков, я хочу показывать только объекты, связанные с текущей версией. Я храню идентификатор версии в COOKIES, и я хотел написать менеджеров пользовательских моделей, в которых я фильтрую объекты по этому идентификатору.Django - получить cookie без запроса

Или это должно быть иначе?

+0

Вы не можете получить * ничего * без запроса, потому что это веб-фреймворк. –

+0

Без запроса, то есть без использования объекта запроса непосредственно, например, в models.py. Существует промежуточное решение: [link] (https://djangosnippets.org/snippets/2853/), но я думал, что существует более простой способ. – arczi

+0

Это ужасно, и это очень плохая идея; помимо всего прочего, вы не обязательно связываете свои модели с вашим запросом. Если вам нужно что-то из запроса, вы должны передать его там. –

ответ

0

Прежде всего, вы должны понимать некоторые понятия.

Печенье: «Это небольшой фрагмент данных, отправленных с сайта и хранятся в веб-браузере пользователя, когда пользователь просматривает этот сайт»

Источник: Wikipedia

В большинстве случаев вы используете куки для хранения данных, которые будут контролировать ваш сеанс пользователя, а не ваш веб-сайт. Это означает, что вы пытаетесь сделать, это должно быть сделано непосредственно в ваш код, не используя файлы cookie.

Другая причина заключается в том, что вы можете изменить данные своего cookie, и, возможно, у вас будут проблемы с безопасностью. Вот почему каждая страница django имеет csrftoken.

Во всяком случае, в вашем случае, я бы не прочь использовать что-то связанное с Ajax, то вы можете переключиться на вкладках или все, что вы должны контролировать только данные, которые вы будете редактировать:

Ajax concepts

Using Ajax with Django

+0

«В большинстве случаев вы используете файлы cookie для хранения данных, которые будут контролировать ваш сеанс пользователя, а не ваш сайт». Точно, мой английский плохой, так что, возможно, вы меня не поняли. Я все знаю. Я использую угловой, но с ajax поток должен выглядеть следующим образом: пользователь нажимает кнопку> в views.py: Object.objects.filter (edition__id = editon) (куки формы формы)> возвращаемый список объектов Но я хочу для фильтрации в диспетчере моделей, потому что, например, в формах, которые я хочу, например: ModelMultipleChoiceField (queryset = Object.objects.current_edition()) (current_edition - для пользователя в его файлах cookie) Я могу из хранить его в db. – arczi

+0

Хорошо, думаю, я понимаю. Итак, первый раз, когда вы показываете свою страницу/представление, почему вы не используете объект REQUEST django для получения своего файла cookie? https://docs.djangoproject.com/en/1.8/ref/request-response/#django.http.HttpRequest.COOKIES – Lara

+0

Это помогло? Подумайте о том, чтобы проголосовать или принять вопрос ... – Lara

Смежные вопросы