gpt4 book ai didi

python - Django - 一个 CBV 处理多种场景

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:21 29 4
gpt4 key购买 nike

我无法理解如何使用单个 CBV 来处理(至少)2 个不同的场景。这就是我正在尝试做的事情:

  1. 我有一个 ListView 来显示对象列表。从那里,我生成一个链接以导航到
  2. 用于显示对象详细信息的 DetailView。从那里,我生成一个链接到
  3. 用于呈现相关报告的不同 View 。

我想使用以下 URL:

1. /myapp/list.html/
2. /myapp/detail.html/<<uuid>>/
3. /myapp/detail.html/<<uuid>>/?<layout>

场景 2 和 3 我正在考虑使用单个 CBV,但我不明白如何区分这些场景。你能建议我的 urls.py 和 view.py 需要是什么样子吗?

编辑:同时,我需要使用两个不同的模板(或者以某种方式区分模板中显示的内容):如果我调用/myapp/detail.html/<>/那么我想看到对象详细信息。如果我调用/myapp/detail.html/<>/?我想渲染一个 iframe 来显示相应的报告。

谢谢!

编辑:

这是点击流程click flow

最佳答案

对于 Django 2+,请在 urls.py 中使用路径而不是 url

url.py

from django.urls import path, re_path
urlpatterns = [
path('/myapp/list.html/', MyModelListView.as_view(), name="mymodel_list"),
re_path(r'^/myapp/detail.html/(?P<uuid>[0-9a-f-]+)/(?P<layout>\w+)$', MyModelDetailView.as_view(), name="mymodel_detail"),
]

View .py

from django.views.generic import ListView, DetailView

class MyModelListView(ListView):
model = MyModel


class MyModelDetailView(DetailView):
model = MyModel

def get_queryset(self):
layout = self.kwargs.get("layout", None)
uuid = self.kwargs.get("uuid")
# Your logic goes here

关于python - Django - 一个 CBV 处理多种场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52398579/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com