python - 限制 django 视图上的内容
问题描述
我正在尝试执行此操作,所有付费的包含类型 2 的 vip 用户都允许查看完整信息,但它确实如预期的那样,但有一个小问题,如果这不属于 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 %}
解决方案
如果它小于 1,我建议检查检索到的课程的计数,然后重定向到升级视图/模板。
推荐阅读
- python - 如何在 Python 中格式化 txt 文件
- apiconnect - 在 IBM Api connect 中,无法将响应 Content-Type 更改为“application/json; 字符集=UTF-8”
- reactjs - 当单击侧边栏项目时,想要传递一些道具来检查隐藏或显示组件中的某些按钮,核心 ui 中的侧边栏菜单 reactjs
- java - @PreAuthorize 注解无法解析变量
- android - UnmetDependencyException:缺少 Crashlytics 构建 ID
- c++ - 预期的 ';' 在 qt 中的声明结束时
- python - 如何将数据输入我的神经网络?
- arrays - 为什么我得到 TypeError: _this.data.forEach is not a function
- python - 我的 python 3 环境正在构建一个 python 2 轮子
- circuit-sdk - 如何在 Circuit JS SDK 中按 itemId 获取项目?