我很难理解如何使用单个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 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…