Python Django显示用户收藏夹卡页面

Python Django显示用户收藏夹卡页面,python,django,favorites,Python,Django,Favorites,这是我与Django的第一个项目,我到处搜索,但没有找到解决方案 在我的网站上,我有卡片,我希望用户能够将他想要的卡片添加到收藏夹中。这个函数可以工作,但我想创建一个页面,让他可以看到自己最喜欢的卡片。 这是我的问题:我只能显示所有用户的所有收藏卡。当我只想要经过身份验证的用户的收藏夹卡时。 这是我的密码: 这是.html文件: {% if user.is_authenticated %} {% for carte in carte_list %} {% if carte.f

这是我与Django的第一个项目,我到处搜索,但没有找到解决方案

在我的网站上,我有卡片,我希望用户能够将他想要的卡片添加到收藏夹中。这个函数可以工作,但我想创建一个页面,让他可以看到自己最喜欢的卡片。 这是我的问题:我只能显示所有用户的所有收藏卡。当我只想要经过身份验证的用户的收藏夹卡时。 这是我的密码:

这是.html文件:

{% if user.is_authenticated %}
   {% for carte in carte_list %}
       {% if carte.favori.exists %}

           //code for my card

       {% endif %}
   {% endfor %}

{% endif %}
class FavoriListView(generic.ListView):
    model = Carte

    template_name = '../templates/appli/favori_list.html'

    def get_context_data(self, *args, **kwargs):
        context = super(FavoriListView, self).get_context_data(*args, **kwargs)
        context['carte_list'] = Carte.objects.all()
        return context



class CarteDetailView(generic.DetailView):
    model = Carte

    template_name = '../templates/appli/carte_detail.html'

    def get_context_data(self, *args, **kwargs):
        context = super(CarteDetailView, self).get_context_data(*args, **kwargs)
        context['carte_list'] = Carte.objects.all()
        return context

    def get(self, request, *args, **kwargs):

        id = self.kwargs['pk']
        carte = get_object_or_404(Carte, id=id)
        est_favori = False

        if carte.favori.filter(id=request.user.profil.id).exists():
            est_favori = True
        else:
            est_favori = False

        context = {
            'carte': carte,
            'est_favori': est_favori
        }

        context['carte_list'] = Carte.objects.all()

        return render(request, '../templates/appli/carte_detail.html', context)

def carte_favori(request, id):
    carte = get_object_or_404(Carte, id=id)

    if carte.favori.filter(id=request.user.profil.id).exists():
        carte.favori.remove(request.user.profil)
    else:
        carte.favori.add(request.user.profil)

    return HttpResponseRedirect(carte.get_absolute_url())
class Profil(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    //some others attributes

    def get_absolute_url(self):
        return reverse('profil', args=[str(self.id)])



class Carte(models.Model):
    titre = models.CharField(max_length=200, verbose_name='Titre')

    //some others attributes

    favori = models.ManyToManyField(Profil, blank = True)

    def __str__(self):
        return self.titre

    def get_absolute_url(self):
        return reverse('carte-detail', args=[str(self.id)])
这是我的视图.py文件:

{% if user.is_authenticated %}
   {% for carte in carte_list %}
       {% if carte.favori.exists %}

           //code for my card

       {% endif %}
   {% endfor %}

{% endif %}
class FavoriListView(generic.ListView):
    model = Carte

    template_name = '../templates/appli/favori_list.html'

    def get_context_data(self, *args, **kwargs):
        context = super(FavoriListView, self).get_context_data(*args, **kwargs)
        context['carte_list'] = Carte.objects.all()
        return context



class CarteDetailView(generic.DetailView):
    model = Carte

    template_name = '../templates/appli/carte_detail.html'

    def get_context_data(self, *args, **kwargs):
        context = super(CarteDetailView, self).get_context_data(*args, **kwargs)
        context['carte_list'] = Carte.objects.all()
        return context

    def get(self, request, *args, **kwargs):

        id = self.kwargs['pk']
        carte = get_object_or_404(Carte, id=id)
        est_favori = False

        if carte.favori.filter(id=request.user.profil.id).exists():
            est_favori = True
        else:
            est_favori = False

        context = {
            'carte': carte,
            'est_favori': est_favori
        }

        context['carte_list'] = Carte.objects.all()

        return render(request, '../templates/appli/carte_detail.html', context)

def carte_favori(request, id):
    carte = get_object_or_404(Carte, id=id)

    if carte.favori.filter(id=request.user.profil.id).exists():
        carte.favori.remove(request.user.profil)
    else:
        carte.favori.add(request.user.profil)

    return HttpResponseRedirect(carte.get_absolute_url())
class Profil(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    //some others attributes

    def get_absolute_url(self):
        return reverse('profil', args=[str(self.id)])



class Carte(models.Model):
    titre = models.CharField(max_length=200, verbose_name='Titre')

    //some others attributes

    favori = models.ManyToManyField(Profil, blank = True)

    def __str__(self):
        return self.titre

    def get_absolute_url(self):
        return reverse('carte-detail', args=[str(self.id)])
(我也有一个CarteListView)

这是models.py文件:

{% if user.is_authenticated %}
   {% for carte in carte_list %}
       {% if carte.favori.exists %}

           //code for my card

       {% endif %}
   {% endfor %}

{% endif %}
class FavoriListView(generic.ListView):
    model = Carte

    template_name = '../templates/appli/favori_list.html'

    def get_context_data(self, *args, **kwargs):
        context = super(FavoriListView, self).get_context_data(*args, **kwargs)
        context['carte_list'] = Carte.objects.all()
        return context



class CarteDetailView(generic.DetailView):
    model = Carte

    template_name = '../templates/appli/carte_detail.html'

    def get_context_data(self, *args, **kwargs):
        context = super(CarteDetailView, self).get_context_data(*args, **kwargs)
        context['carte_list'] = Carte.objects.all()
        return context

    def get(self, request, *args, **kwargs):

        id = self.kwargs['pk']
        carte = get_object_or_404(Carte, id=id)
        est_favori = False

        if carte.favori.filter(id=request.user.profil.id).exists():
            est_favori = True
        else:
            est_favori = False

        context = {
            'carte': carte,
            'est_favori': est_favori
        }

        context['carte_list'] = Carte.objects.all()

        return render(request, '../templates/appli/carte_detail.html', context)

def carte_favori(request, id):
    carte = get_object_or_404(Carte, id=id)

    if carte.favori.filter(id=request.user.profil.id).exists():
        carte.favori.remove(request.user.profil)
    else:
        carte.favori.add(request.user.profil)

    return HttpResponseRedirect(carte.get_absolute_url())
class Profil(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    //some others attributes

    def get_absolute_url(self):
        return reverse('profil', args=[str(self.id)])



class Carte(models.Model):
    titre = models.CharField(max_length=200, verbose_name='Titre')

    //some others attributes

    favori = models.ManyToManyField(Profil, blank = True)

    def __str__(self):
        return self.titre

    def get_absolute_url(self):
        return reverse('carte-detail', args=[str(self.id)])

你需要像这样过滤卡片上下文['carte\U list']=carte.objects.filter(favori\uu user=self.request.user)omg非常感谢你这太简单了!!我应该以更格式化的方式发布。没关系,就算代码格式不正确,你也能做到这点,这是你的荣幸。