python – Django:如何在呈现视图后更新模型?
我有一个显示模型列表的视图.在呈现视图之后,需要更新某些模型的某些属性:即,用户应该在第一次访问时看到原始的,未更改的值以及连续访问时(或页面重新加载时)的更新值.
我以为我可以通过基于类的通用视图来实现这一点. official documentation暗示“在调用泛型视图之前或之后做一些额外的工作”(强调我的),但所有给出的例子都会在模型显示之前影响模型. 我调查了信号,但无济于事. 产生异步任务是一种选择,但是,因为我需要做的就是更新几个模型中的字段(可能是一个或没有)并保存它们,这对于手头的任务来说似乎有些过分. 可以使用ajax请求来触发更新,或者使用自定义模板标记来显示相关字段并在此后更新它们.我不喜欢这两个,因为他们将应用程序逻辑移动到视图层. ajax技术还增加了第二个请求的开销. 然而,我似乎没有别的选择,或者我呢?是否有更实用的技术可以在渲染模板后插入通用视图或请求并执行额外的逻辑? 解决方法
这里不需要任何聪明的东西.渲染模板不需要是视图的结尾 – 只有在您实际将其作为响应返回时才会出现.他们不必处于同一步骤.
所以: def my_view(request,params): ... do something ... response = render_to_response('my_template.html',{'foo': bar'}) ... do something after rendering ... return response 现在,如果您需要在很多视图中执行此操作,您可能希望在装饰器中执行此操作: def my_decorator(view): def my_func(request,params): response = view(request,params) ... do something after rendering ... return response return my_func 现在您可以使用@my_decorator来装饰您的视图,并在渲染后执行操作. …或者,它只是发生在我身上,如果你想在每个视图中都这样做,你可以在中间件中完成它(只需定义 注释后编辑基于类的通用视图使用新的TemplateResponse类.您可以添加在使用post-render callback实际呈现模板后发生的任务. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python – 如何从马尔可夫链输出创建段落?
- 现在都是数据时代,谁还充会员!Python爆破某会员网站!不花
- python一次读1000直到文件结束?
- python – pandas resample / TimeGrouper中的错误
- 有没有办法将列表中项目的“其余”分配给python中多个赋值中
- python – 从Datetime操作创建TimeDeltas的pandas错误
- python – 告诉PyCharm代码生成的类字段
- python – 日志或exp的溢出/数学范围错误
- 在Python中处理字符串之isdecimal()方法的使用
- Python实现遍历windows所有窗口并输出窗口标题的方法