显示介绍性视频,仅首次访问Django

时间:2018-11-24 10:08:42

标签: javascript django frontend

我有一个Django应用,该应用需要显示一个可以访问该网站的视频。我只希望它在初次访问时执行此操作,而不是在用户每次刷新时执行此操作。我觉得会议可能与此有关,但我不确定。谢谢!

1 个答案:

答案 0 :(得分:1)

我认为最好将此标志直接放在您的数据库中。您可以在用户模型(如果使用自定义用户)中或在与OneToOneUser关系的模型中放置一个字段。例如:

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