如何将参数传递给 Django 通用视图 [英] How to pass parameters to django generic views
问题描述
我想将一个数字传递给我的通用视图 (DetailView) 以获取一个对象 这是我的代码
I would like to pass a number to my generic view (DetailView) to get one object Here is my code
网址模式
(r'^newreportview/(?P<number>w+)/$', NewReportView.as_view()),
查看类
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
我想这行有问题
name = get_object_or_404(MyTask,applicationnnumber=self.args[0])
错误信息:
Exception Type: IndexError
Exception Value:
tuple index out of range
我应该如何将数字"传递给这个通用视图并使用这个数字"获取 Mytask 对象?
How should I pass 'number' to this generic view and get a Mytask object with this 'number'?
谢谢
推荐答案
您错过了通用视图的全部要点.对于一个简单的 DetailView - 它是单个对象的视图 - 您只需在类中定义 model
和 slug
属性:
You have missed the entire point of generic views. For a simple DetailView - which is a view of a single object - you just define the model
and slug
attributes in the class:
(r'^newreportview/(d+)/$', NewReportView.as_view()),
class NewReportView(DetailView):
template_name = "report/newreportview.html"
model = MyTask
slug = 'applicationnnumber'
(您也可以很容易地在 URL 定义中将这三个作为参数传递,因此根本不需要创建子类.)
(You could also just as easily have passed those three as parameters in the URL definition, so no need to make a subclass at all.)
您没有获得 self.args
值的原因是您将参数作为 kwarg 传递,而不是 arg.所以 self.kwargs['number']
会起作用,就像我在此处显示的修改后的 URL 一样.
The reason why you were getting no values for self.args
is that you had passed your parameter as a kwarg, not an arg. So self.kwargs['number']
would have worked, as would the revised URL I've shown here.
这篇关于如何将参数传递给 Django 通用视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!