有没有办法在模板呈现之前访问将在views.py中的generic.DetailView中呈现的模型实例?像这里假设的功能:
class MyModelDetailView(LoginRequiredMixin, generic.DetailView):
model = MyModel
template_name_suffix = '_details'
def do_some_initial_stuff(model_instance):
# do stuff to model_instace,
# like assigning fields, creating context variables based on existing fields, etc.
最终,我希望用户在一个模板中单击特定模型实例的按钮,然后定向到这个generic.DetailView模板,其中模型的一些字段值发生变化,其他一些东西(例如。该模型可能有一个字段,确认该用户单击了上一个模板中的按钮)。建议最有效的方法来做到这一点将不胜感激。谢谢:))
答案 0 :(得分:1)
如果您只想在上一个视图中单击按钮进行某些更改,则可以使用Django 会话。将所需的值添加到会话dict。
# (* top-level *)
# let repeat_10 = repeat ~n:10;;
# repeat_10 "foo";;
- : bytes = "foofoofoofoofoofoofoofoofoofoo" (* top-level output *)
要在当前视图上下文中进行更改,可以通过覆盖get_context_data()来完成。
像:
request.session['button_clicked'] = True
有关Django会话的更多信息:https://docs.djangoproject.com/en/1.11/topics/http/sessions/