我正在尝试在Django中编写我的第一个中间件。
class RefreshBalance:
def process_view(self, request, view_func, view_args, view_kwargs):
pass
我想检测是否调用了视图并刷新了余额。我可以看到'view'参数,但不知道如何使用它?例如:
if view == "login.dashboard:
pass
如何找出正在调用的视图?
答案 0 :(得分:2)
process_view(self,request,view_func,view_args, view_kwargs)request是一个HttpRequest对象。 view_func是Python Django即将使用的功能。 (这是实际的功能 对象,而不是函数的名称作为字符串。)
所以你需要做一些事情:
from login import dashboard
if view_func.__name__ == dashboard.__name__:
pass
答案 1 :(得分:0)
回答问题:
<块引用>我可以看到“view”参数,但不知道如何使用它?
那你就没有使用 python 的力量和美丽。
试试这个:
breakpoint()
if view == "login.dashboard:
pass
这将暂停执行,并允许您在代码中与 python 交互。
一旦它暂停执行,我做的第一件事就是输入 list<ENTER>
列出它停止的地方周围的代码,只是为了定位自己。
想看看 view
是什么类型的对象?输入 type(view)
,现在您知道了!
想知道它有哪些方法和属性,dir(view)
,现在你知道了。或 pp dir(view)
以漂亮地打印出来。
哦,它有一个 foo_very_interesting_method
,试试:
solong = view.foo_very_interesting_method
help(solong)
如果幸运的话,它会打印一些有用的信息。
想要查看 view.bar_attribute 的值,输入 view.bar_attrbiute
,然后打印出来。
完成播放后,输入 c
继续,q
退出,n
转到下一行,或 s
步。
如果您研究python debugger
,还有更多。
享受能够弄清楚发生了什么!