我正在使用Django sessions,我想用一种方式在管理界面中查看会话数据。这可能吗?
也就是说,对于每一个会话,我都希望看到会话数据库中存储的数据(就我所能收集到的而言,它实际上是一个字典)。
目前我只能在Session data
字段中看到一个散列,例如:
gAJ9cQEoVQ5zb3J0aW5nX2Nob2ljZXECVQJQT3EDVQxnYW1lc19wbGF5ZWRxBH1xBVgLAAAAcG9z
dG1hbi1wYXRxBksDc1UKaXBfYWRkcmVzc3EHVQkxMjcuMC4wLjFxCFUKdGVzdGNvb2tpZXEJVQZ3
b3JrZWRxClUKZ2FtZV92b3Rlc3ELfXEMdS4wOGJlMDY3YWI0ZmU0ODBmOGZlOTczZTUwYmYwYjE5
OA==
为了实现这一点,我在admin.py中添加了以下内容:
from django.contrib.sessions.models import Session
...
admin.site.register(Session)
特别是我希望能够看到每个会话至少一个IP地址。(如果我能计算每个IP地址有多少会话,并根据每个会话的总数对IP进行排序,那也太好了。)
谢谢你的帮助:-)
继续托马斯的回答,我接着说:
你可以这样做:
甚至可以在列表显示中直接使用get_decoded。如果有一些陷阱阻止它正常工作,您可以自己解码会话数据,基于链接的Django源。
会话数据包含在base64编码的pickled字典中。这就是您在管理中看到的,因为该数据存储在会话模型的文本字段中。
我不认为任何分布式django代码都会在会话中存储ip地址,但是如果您可以访问它,您可以自己完成。
为了显示真实的会话信息,您可以编写自己的表单字段来显示解码的信息。请记住,如果要修改save方法,还必须覆盖它。您可以查看
django/contrib/sessions/models.py
中的编码和解码方法。相关问题 更多 >
编程相关推荐