我希望能够收集匿名用户和登录用户使用webapp的基本统计信息.
这里的共性是使用会话ID,我可以为登录和注销的用户存储数据,并且仍然能够将存储的统计信息链接到给定的会话(会话所属的人是无关紧要的).
但是,我session_key遇到了收集问题的问题,因为当匿名用户进入网站时似乎没有设置(可能是因为Django会话只在修改时保存).
当我使用登录用户测试视图时:
def create(request, *args, **kwargs):
print request.session.session_key
Run Code Online (Sandbox Code Playgroud)
对于登录用户,将session_key打印.对于已注销的用户或匿名用户,这是None.在第一次请求到站点时,会话不存在,因此对视图不可用.
我目前的计划是创建一个自定义中间件作为官方会话中间件的子类,但是process_request()为那些没有一个via的人重写实例化会话session.save().
我对这种方法的唯一关注是,我不确定它是否会对Django的其他部分产生不可预见的后果 - 人们有什么建议吗?
该sum()功能仅适用于数字,而不适用于字符串.
int_lst = [1, 2]
sum(int_lst)
=> 3
str_lst = ['a', 'b']
sum(str_lst)
Traceback (most recent call last):
File "python", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Run Code Online (Sandbox Code Playgroud)
我发现这种行为很奇怪,因为sum()函数只是一种更加pythonic的方式reduce(lambda i, sum:i+sum).并且减少允许我连接字符串,而sum()不是.
iterable的项通常是数字,并且不允许起始值是字符串.
所以为什么?
OOP教我们制作多态的东西因为它的灵活性.