python - Django:DetailView 和多个 slugs

标签 python django django-class-based-views

我的 DetailView 有问题。我想确保两个值都在网址字符串中,然后显示页面。但是我总是在这里收到此错误:

KeyError at /orders/ticket/ug2dc78agz-1/d04fkjmo37/
'order_reference'

views.py

class TicketView(DetailView):
    model = Attendee
    template_name = 'orders/ticket_view.html'

    def get_queryset(self):
        return Attendee.objects.filter(
            order__order_reference=self.kwargs['order_reference'],
        ).filter(
            access_key=self.kwargs['access_key'],
        )

urls.py

urlpatterns = [
    path(
        'ticket/<slug:ticket_reference>/<slug:access_key>/',
        TicketView.as_view(),
        name='ticket'
    ),
]

最佳答案

您收到错误是因为您尝试访问 self.kwargs['order_reference'],但您没有在 path( )

您的path()使用,

'ticket/<slug:ticket_reference>/<slug:access_key>/'

因此您可以使用 self.kwargs['ticket_reference']self.kwargs['access_key']

由于您的路径不包含 slugpk,Django 将不知道如何获取详细 View 的对象。我会覆盖 get_object 而不是 get_queryset:

def get_object(self):
    return get_object_or_404(
        Attendee,
        order__order_reference=self.kwargs['slug:ticket_reference'],
        access_key=self.kwargs['access_key'],
    )

关于python - Django:DetailView 和多个 slugs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51155021/

相关文章:

python - 字符串如何存储为 'sequence of Unicode code points' ?

python - 如何使用 python 在 MacOS 上设置代理设置

Django object.get(pk = sth),如何检查输入是否不是恶意的

django - 如何使用基于类的 View 处理表单(通过 get 或 post)?

django - 如何使用 CreateView 将用户对象传递到 Modelform

python - 不支持 pandas dataframe 到 mysql db 错误数据库风格 mysql

python - 如何在列表中查找位置?

python - 使用 TastyPie 将 ForeignKey 字段更新为 null

python - 在 React 组件中使用 Django 静态文件

python - Django Rest Framework - 主 url HTTP/1.1"404 未找到