Предоставление анонимным пользователям той же функциональности как зарегистрированные

версии сафари, которые мы тестировали на iOS, неправильно интерпретируют исходный z-индекс. Увеличьте z-индекс в выпадающем меню. Вместо того, чтобы нажимать на элемент, он скрыт и меню закрывается. Чтобы заставить Safari работать, нам нужно было переопределить загрузочный z-index: initial.

.dropdown-menu {
  z-index: 25000 !important;
}
6
задан S.Lott 29 May 2009 в 11:43
поделиться

4 ответа

Я не делал этого раньше, но, прочитав ваше описание, я бы просто создал пользовательский объект, когда кому-то нужно сделать что-то, что этого требует. Затем вы отправляете пользователю файл cookie, который ссылается на этот объект пользователя, поэтому, если кто-то вернется (не очищая свои файлы cookie), он получит тот же скелетный объект пользователя.

Это означает, что вы можете использовать свой текущий код с минимальными изменениями и когда они хотят перейти к полному зарегистрированному пользователю, вы можете просто заполнить скелетный объект пользователя его данными.

Если вы хотите, чтобы ваша БД была аккуратной, вы можете добавить задачу, которая удаляет всех скелетных пользователей, которые не использовались скажем, за последние 30 дней.

9
ответ дан 8 December 2019 в 16:09
поделиться

Просто сохраните данные пользователя в таблице пользователей и не заполняйте затем таблицы идентификаторов пользователей / паролей.

если пользователь регистрируется, вам просто нужно заполнить эти поля.

необходимо периодически запускать какой-нибудь скрипт «очистки», чтобы очистить всех пользователей, которые не заходили на сайт в произвольный период времени. Я бы сделал эту очистку необязательной. и иметь сценарий, который можно запустить на сервере (или через интерфейс веб-администратора), чтобы очистить его, если ваш клиент захочет сделать это вручную.

не забудьте удалить все связанные записи, а также запись пользователя.

2
ответ дан 8 December 2019 в 16:09
поделиться

Мне кажется, что самый простой способ сделать это - сохранить как идентификатор пользователя, так и идентификатор сеанса:

class Cart(models.Model):
    user = models.ForeignKey(User, null=True)
    session = models.CharField(max_length=32, null=True)

Затем, когда пользователь регистрируется, вы можете взять его request.session.session_key и обновите все строки с их новым идентификатором пользователя.

Еще лучше, вы можете определить модель « UserProxy »:

class Cart(models.Model):
    user = models.ForeignKey(UserProxy)

class UserProxy(models.Model):
    user = models.ForeignKey(User, unique=True, null=True)
    session = models.CharField(max_length=32, null=True)

Итак, вам просто нужно обновить Таблица UserProxy, когда они регистрируются, и ничего в корзине не должно меняться.

4
ответ дан 8 December 2019 в 16:09
поделиться

Думаю, вы были на правильном пути, думая об использовании сессий. Я бы сохранил список идентификаторов продуктов в сеансе пользователя, а затем, когда пользователь зарегистрируется, создаю корзину, как вы определили, а затем добавлю элементы. Ознакомьтесь с документацией сеанса .

Вы можете разрешить людям, которые либо не вошли в систему, либо не имеют учетной записи, добавлять товары в «временную» корзину. Когда человек входит в любую учетную запись или создает новую учетную запись, добавьте эти товары в свою «настоящую» корзину. Затем, просто добавив несколько строк в функции «добавить товар в корзину» и войдя в систему, вы сможете использовать существующие модели.

0
ответ дан 8 December 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: