Я новичок в веб-разработке и программировании на Python.
Я хочу создать кнопку, с помощью которой пользователи смогут подписываться и отписываться от подканала (очень похоже на категорию форума) на форуме.
Я действительно хочу, чтобы пользователь мог подписываться и отписываться, нажимая кнопку подканала.
views.py:
class SubChannelSubscriptionView(ListView):
template_name = 'subscription.html'
model = Topic
def get_queryset(self):
return SubChannelSubscription.objects.filter(user=self.request.user)
def get_context_data(self, **kwargs):
context = super(SubChannelSubscriptionView, self).get_context_data(**kwargs)
context['SubChannel'] = SubChannel.objects.all()
context['top'] = Topic.objects.filter(category__subchannel_subs__user=self.request.user)
return context
def subd(self, request):
subchannel = get_object_or_404(SubChannel, pk=self.kwargs['pk'])
is_subd = False
if subchannel.subd.filter(pk=request.user).exists():
subchannel.subd.remove(request.user)
is_subd = False
else:
subchannel.is_subd.add(request.user)
is_subd = True
return reverse('index')
models.py:
class SubChannel(models.Model):
title = models.CharField(max_length=150, unique=True, null=True)
description = models.CharField(max_length=150, null=True)
subd = models.ManyToManyField(User, related_name='subd' )
subscription.html:
<form action="{% url 'index' %}" method="post">
{% csrf_token %}
{% if is_subd %}
{% for sb in SubChannel %}
<button type="submit" value="" > subd{{ sb }} </button>
{% endfor %}
{% else %}
{% for sb in SubChannel %}
<button type="submit" value="" >not sub {{ sb }}</button>
{% endfor %}
{% endif %}
</form>