Я думаю, что лучше всего поставить этот флаг прямо в вашей базе данных.Вы можете поместить поле в свою пользовательскую модель (если вы используете пользовательский пользователь) или в модель, которая имеет отношение 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