Показывать вступительное видео только при первом посещении Джанго - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть приложение Django, которое должно отображать видео с веб-сайта.Я хочу, чтобы он делал это только при первом посещении, а не каждый раз, когда пользователь обновляется.Я чувствую, что сессии будут как-то связаны с этим, но я не уверен.Спасибо!

1 Ответ

0 голосов
/ 24 ноября 2018

Я думаю, что лучше всего поставить этот флаг прямо в вашей базе данных.Вы можете поместить поле в свою пользовательскую модель (если вы используете пользовательский пользователь) или в модель, которая имеет отношение OneToOne с User.Например:

class Profile(models.Model):
    user = models.OneToOneField(User)
    has_seen_intro = models.BooleanField(default=False)

И отправьте эту информацию в Шаблон из вида, например:

class HomeView(TemplateView):
    template_name = 'home.html'

    def get_context_data(self, **kwargs):
       context = super(HomeView, self).get_context_data(**kwargs)
       profile = self.request.user.profile
       if not profile.has_seen_intro:
           context['show_intro'] = True
           profile.has_seen_intro = False
           profile.save()
       # or  use user.has_seen_intro if you have custom model
       return context

И обновите шаблон следующим образом

{% if show_intro %}
    // intro video codes
{% endif %}

Обновление

для анонимного пользователя, попробуйте вот так:

class HomeView(TemplateView):
    template_name = 'home.html'

    def get_context_data(self, **kwargs):
       context = super(HomeView, self).get_context_data(**kwargs)
       if self.request.user.is_authenticated:
            profile = self.request.user.profile
            if not profile.has_seen_intro:
               context['show_intro'] = True
               profile.has_seen_intro = False
               profile.save()
       else:
            if not self.request.session.get('has_seen_intro', True):
                 self.request.session['has_seen_intro'] = False
                 context['show_intro'] = True
       return context
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...