我学习Django框架已经3-4个月了,但是有一件事最让我困扰,我还没有找到一个满意的答案:当我们在基于类的视图中定义函数/方法时,它们会在创建某个对象时自动被调用吗?就像我们用的一样
@action(detail=False)
def recent_users(self, request):
recent_users = User.objects.all().order_by('-last_login')
page = self.paginate_queryset(recent_users)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(recent_users, many=True)
return Response(serializer.data)
如何执行此方法?我们必须像obj.method那样创建一个对象和调用吗
以及这些get() get_queryset()
方法如何在基于类的视图中工作??他们如何处理模型中的数据
最后一个问题是两者的混合
我可以在ClassBasedView中创建一个新方法吗?如果是,如何执行作为回报,在模板中呈现数据
请不要提供任何链接。我只想知道简单的英语术语。如果有人知道,那会很有帮助的
在} class method 。查看源代码可以发现,这实际上定义了一个函数视图,该视图调用基于类的视图的
path
(url
之前的2.X)函数中引用基于类的视图时,我们调用^{dispatch
方法这意味着基于类的视图中的入口点是
dispatch
方法。所有其他方法都是从dispatch
开始调用的。dispatch立即调用的方法都是named according to HTTP methods(例如get
、post
、delete
)这是从
TemplateView
继承的视图的典型路径as_view
返回调用dispatch
的函数李>dispatch
调用get
,或者,如果request.method
不是GET
,则调用http_method_not_allowed
方法李>get
调用get_context_data
,并将其作为参数传递给render_to_response
李>render_to_response
调用get_template_names
,并将其作为参数传递给TemplateResponse
李>可以在基于类的视图中定义任何方法,但除非在已被调用的地方调用它,否则不会调用它
一个常见的修改是向
get_context_data
添加一些内容https://ccbv.co.uk/是编写基于类的视图的有用资源。当我写基于类的视图时,我总是引用那个站点
相关问题 更多 >
编程相关推荐