如何使用CBV Django进行验证

时间:2019-03-01 17:59:41

标签: django django-2.0 django-2.1

我正在构建像应用程序这样的pastebin。到目前为止,大多数基本功能都运行良好。 我想在粘贴中添加密码功能,但是这些类型的CBV示例未在django文档中显示。 我正在使用CBV,详细视图是:

class DetailPaste(DetailView):
    template_name = 'pastebin/detail_view.html'

    def get_queryset(self):
        pk = self.kwargs['pk']
        qs = PasteInstance.objects.filter(pk=pk)
        if qs.exists() :
            if qs[0].public_view:
                return qs
            elif self.request.user.is_authenticated:
                return qs
            else:
                raise Http404()
        else:
            raise Http404()

我知道我可以使用def方法过程定义视图,但是我想知道是否存在使用CBV进行此操作的优雅方法。 我的模型是:

class PasteInstance(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    text = models.TextField(max_length=400)
    timestamp = models.DateTimeField(auto_now_add=True)
    public_view = models.BooleanField(
        default=False, verbose_name='Make this paste public?')
    password = models.CharField(
        max_length=15, blank=True, verbose_name='Protect with password ?')

0 个答案:

没有答案