Как проверить с помощью CBV django - PullRequest
0 голосов
/ 01 марта 2019

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