Django-一个CBV可处理多种情况 - python

我很难理解如何使用单个CBV处理(至少)2种不同情况。这是我想做的事情:

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

我想使用以下网址:

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

方案2和3我正在考虑使用单个CBV,但我不了解如何区分方案。您能建议我的urls.py和views.py需要什么样吗?

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

谢谢!

编辑:

这是点击流Django-一个CBV可处理多种情况 - python

参考方案

对于Django 2+,请使用路径代替url中的urls.py

urls.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"),
]

Views.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

Django:错误:您无权访问该端口 - python

我是整个安装的新手,请保持友善。在dev上,该命令通常可以正常工作,但是自从我尝试使用Django的不同命令以来,某些东西就出错了。python manage.py runserver 0.0.0.0:80 我没有使用此端口的权限了。我可以使用端口8080,但将端口添加到url中通常的主机名末尾时,网站无法正常工作。当我使用端口80时,无论如何我都无需在UR…

Django:DateField“此字段不能为空。” - python

我发布这样的休息请求:{title:some title, recurring:true, day:Wednesday, time:12:30, description:some text} 我没有传递日期,因为该事件重复发生,并且该值应该为空。服务器响应为:{"date": ["This field cannot be bla…

Django TestCase不保存我的模型 - python

我目前正在为Django应用编写一些测试。我的应用程序的signal.py文件中具有以下独立功能:def updateLeaveCounts(): # Setting some variables here todaysPeriods = Period.objects.filter(end__lte=today_end, end__gte=today_sta…

django-simple-history,在admin中显示更改的字段 - python

当我从admin.ModelAdmin继承时,在管理页面的历史记录中,我可以看到哪些字段已更改。但是,现在我需要使用django-simple-history来跟踪所有模型更改。现在,对于管理员,我继承了simple_history.SimpleHistoryAdmin。我可以看到所有模型更改并还原它们,但看不到更改了哪些字段。是否可以在SimpleHist…

将Django博客项目集成到HTML网站中 - python

我有一个经常使用HTML5,CSS3,JQUERY和静态图像的网站。我也有一个用Django编写的Blog,我想将其集成到网站中。我对Django真的很陌生,所以我想知道哪种方法是最好的使用方法。我应该将网站代码集成为Django项目的一部分,还是有其他解决方案?谢谢! 参考方案 您有2种方法将当前站点与Django集成。1)您可以使用API编写Django…