【问题标题】:How to pass a variable in the URL in class based views如何在基于类的视图中传递 URL 中的变量
【发布时间】:2015-11-08 12:18:45
【问题描述】:

我有以下事件源(使用 Django-ical

class EventFeed(ICalFeed):

    def items(self):
        meeting_id = self.kwargs['meeting_id']
        return Meeting.objects.get(id=meeting_id)

我正在尝试通过 URL conf 传递 meeting_id,如下所示:

url(r'^meetings/(?P<meeting_id>\d+)/$', EventFeed()),

但是这会返回'EventFeed' object has no attribute 'kwargs'

【问题讨论】:

  • 肯定 get_queryset 应该返回一个查询集,而不是一个 ID?
  • @DanielRoseman 我不确定 - 我正在尝试关注 stackoverflow.com/a/8925554/2429989
  • 但这并不是说要返回ID。只是说从那里获取它,以便您可以继续并使用它来查询模型并返回查询集。
  • 谢谢,所以我可以在任何定义中使用self.kwargs?我通过编辑简化了我的问题,不幸的是我在获取属性时仍然遇到问题......
  • django-ical 说它是基于 syndication 框架的,它与基于类的视图完全没有关系,它根本不使用 kwargs。我什至不确定您要做什么;这应该是一个提要,即事件列表,而不是单个细节。

标签: django django-views django-urls django-class-based-views


【解决方案1】:

正如 Daniel 在 cmets 中指出的,这是一个联合框架。因此我们需要使用get_object,并在Meeting对象上使用filter而不是get

class EventFeed(ICalFeed):

    def get_object(self, request, *args, **kwargs):
        return int(kwargs['meeting_id'])

    def items(self, meeting_id):
        return Meeting.objects.filter(id=meeting_id)

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 2012-02-14
    • 2013-09-23
    • 2018-02-20
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2020-12-07
    相关资源
    最近更新 更多