限制Django视图上的内容

2024-06-07 06:37:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图做到这一点,所有vip用户付费,包含类型2允许看到完整的信息,但它确实如预期的那样,但有一个小问题,它隐藏了教训给最终用户,如果这不属于x用户登录。我希望向最终用户显示课程,但如果用户尝试单击课程,则显示升级帐户,而不是隐藏内容。我怎样才能做到这一点

模型

class Lesson(models.Model):
  content_title = models.CharField(max_length=120)
  content_text = models.CharField(max_length=200)
  thumbnail = models.ImageField(upload_to='xxx/xxx/xxx/xxx/xxx')
  link = models.CharField(max_length=200, null=True)
  allowed_memberships = models.ManyToManyField(Membership)

  def __str__(self):
    return self.content_title

看法

def get_context_data(self, **kwargs):
    context = super(bootCamp, self).get_context_data(**kwargs)
    lesson = Lesson.objects.first()
    user_membership = UserMembership.objects.filter(user=self.request.user).first()
    user_membership_type = user_membership.membership.membership_type
    lesson_allowed_mem_types = lesson.allowed_memberships.all()
    context['lessons_allowed_mem_types'] = lesson_allowed_mem_types
    context['lessons'] = None
    if lesson_allowed_mem_types.filter(membership_type=user_membership_type).exists():
        if Lesson.objects.filter(allowed_memberships=1):
            context['lessons'] = Lesson.objects.filter(allowed_memberships=1).values()
        elif Lesson.objects.filter(allowed_memberships=2):
            context['lessons'] = Lesson.objects.filter(allowed_memberships=2).values()
        else:
            pass
    return context

模板

  {% if lessons is not None %}
    {% for lessson in lessons %}
      <div class="col-md-3">
          <a href="/{{ lessson.link }}">
            <div class="item">
              <div class="content-overlay"></div>
              <img src="/{{ lessson.thumbnail }}" />
              <div class="content-details fadeIn-bottom">
                <h3 class="content-title">{{ lessson.content_title }}</h3>
                <p class="content-text">{{ lessson.content_text }}</p>
              </div>
            </div>
          </a>
      </div>
      {% endfor %}
  {% else %}
    <p>upgrade</p>
  {% endif %}

Tags: selfdivobjectsmodelscontextcontentfilterclass