icn*_*icn 0 django django-views django-class-based-views
我想将一个数字传递给我的通用视图(DetailView)来获取一个对象这是我的代码
URLPATTERN
(r'^newreportview/(?P<number>\w+)/$', NewReportView.as_view()),
Run Code Online (Sandbox Code Playgroud)
查看课程
class NewReportView(DetailView):
template_name = "report/newreportview.html"
context_object_name = "newreportview"
def get_queryset(self):
task= get_object_or_404(MyTask,applicationnnumber=self.args[0])
return task
Run Code Online (Sandbox Code Playgroud)
我猜这一行有些不对劲
name = get_object_or_404(MyTask,applicationnnumber=self.args[0])
Run Code Online (Sandbox Code Playgroud)
错误信息:
Exception Type: IndexError
Exception Value:
tuple index out of range
Run Code Online (Sandbox Code Playgroud)
我应该如何将'number'传递给这个通用视图并获取带有这个'number'的Mytask对象?
谢谢
您错过了通用视图的全部内容.对于一个简单的DetailView - 它是单个对象的视图 - 您只需在类中定义model和slug属性:
(r'^newreportview/(\d+)/$', NewReportView.as_view()),
class NewReportView(DetailView):
template_name = "report/newreportview.html"
model = MyTask
slug = 'applicationnnumber'
Run Code Online (Sandbox Code Playgroud)
(您也可以轻松地将这三个作为参数传递到URL定义中,因此根本不需要创建子类.)
您没有得到任何值的原因self.args是您已将参数作为kwarg传递,而不是arg.所以self.kwargs['number']会有效,就像我在这里展示的修改后的URL一样.
| 归档时间: |
|
| 查看次数: |
3704 次 |
| 最近记录: |