Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中创建订阅按钮_Python_Django_Web - Fatal编程技术网

Python 如何在Django中创建订阅按钮

Python 如何在Django中创建订阅按钮,python,django,web,Python,Django,Web,我不熟悉web开发和Python编程 我想创建一个按钮,用户可以订阅和取消订阅论坛中的子频道(很像论坛类别) 我真正想要的是用户能够通过点击子频道的按钮来订阅和取消订阅 views.py: 类子通道订阅视图(ListView): 模板名称='subscription.html' 模型=主题 def get_queryset(自我): 返回SubChannelSubscription.objects.filter(用户=self.request.user) def获取上下文数据(自身,**kwar

我不熟悉web开发和Python编程

我想创建一个按钮,用户可以订阅和取消订阅论坛中的子频道(很像论坛类别)

我真正想要的是用户能够通过点击子频道的按钮来订阅和取消订阅

views.py:

类子通道订阅视图(ListView):
模板名称='subscription.html'
模型=主题
def get_queryset(自我):
返回SubChannelSubscription.objects.filter(用户=self.request.user)
def获取上下文数据(自身,**kwargs):
context=super(SubChannelSubscriptionView,self)。获取上下文数据(**kwargs)
context['SubChannel']=SubChannel.objects.all()
context['top']=Topic.objects.filter(category\uuu subchannel\uu subs\uuuu user=self.request.user)
返回上下文
def subd(自我,请求):
子通道=获取对象或404(子通道,pk=self.kwargs['pk'])
is_subd=False
如果subchannel.subd.filter(pk=request.user).exists():
subchannel.subd.remove(request.user)
is_subd=False
其他:
subchannel.is_subd.add(request.user)
_subd=真吗
返回反向('索引')
models.py:

类子信道(models.Model):
title=models.CharField(最大长度=150,唯一性=True,空值=True)
description=models.CharField(最大长度=150,null=True)
subd=models.ManyToManyField(用户,相关的_name='subd')
subscription.html:


{%csrf_令牌%}
{%if是_subd%}
{子通道%中的sb为%1}
subd{{sb}
{%endfor%}
{%else%}
{子通道%中的sb为%1}
不是sub{{sb}
{%endfor%}
{%endif%}

在订阅之间切换的一种简单方法是为订阅创建url并通过ajax执行。 这个url,在它的视图中,我们得到了用户和频道,然后我们可以通过查询发现,如果用户订阅了频道,如果为True,则删除他,否则将该用户添加到频道

我无法发布任何代码,因为我不理解逻辑。这里我注意到
子频道
有一个信号键
频道
和用户的许多字段

我认为应该只有两种模式

  • 渠道
  • 用户->多域通道

  • 通过这种方式,用户可以轻松地管理具有多个频道的用户和所有订阅一个频道的用户。添加UserChannel的第三个DBTable是由Django ORM在内部完成的。(我知道这可能无法满足您的特定需求。)

    在订阅之间切换的一种简单方法是为订阅创建url并通过ajax执行。 这个url,在它的视图中,我们得到了用户和频道,然后我们可以通过查询发现,如果用户订阅了频道,如果为True,则删除他,否则将该用户添加到频道

    我无法发布任何代码,因为我不理解逻辑。这里我注意到
    子频道
    有一个信号键
    频道
    和用户的许多字段

    我认为应该只有两种模式

  • 渠道
  • 用户->多域通道

  • 通过这种方式,用户可以轻松地管理具有多个频道的用户和所有订阅一个频道的用户。添加UserChannel的第三个DBTable是由Django ORM在内部完成的。(我知道这可能不适合您的特定要求。)

    如果您将方法重命名为
    post
    ,这可能会起作用。如果您将方法重命名为
    post
    ,这可能会起作用。