【问题标题】:Django - how to extend the session class?Django - 如何扩展会话类?
【发布时间】:2017-04-06 15:48:16
【问题描述】:

简而言之,我想在会话中存储datetime.datetime的值,而不是在很多地方写datetime.strftimedatetime.strptime

我对会话使用默认的 JSON 序列化程序,并且我已经阅读了为什么我不应该切换到 Pickle

所以我想我可以通过扩展会话类来实现它。所以我会写下我的观点:

request.session.setDatetime('somekey', datetime_value)

request.session.getDatetime('somekey')

这些将处理日期时间与字符串之间的转换。

有没有一种简单的方法来扩展会话类而不会弄乱太多 django 内部结构?

【问题讨论】:

    标签: python django datetime session


    【解决方案1】:

    我不确定,您为什么要寻找扩展会话课程。有一次,我使用 requests 'session' 属性如下:

    如果要设置会话变量: 简单地说:

           request.session['myvar'] = 'testdata'
    

    并访问该会话变量:

           if 'myvar' in request.session:
               myvar = request.session['myvar']
    

    【讨论】:

    • datetime.datetime 不是 JSON 可序列化的,您不能将其存储在会话中。这就是为什么我必须从日期字符串转换为日期字符串
    • 我认为没有比简单地将日期时间对象转换为字符串更好的方法:json.dump(your_date.strftime('%Y-%m-%dT%H:%M:%S'))
    • 这就是当前所做的(只是没有 json.dumps,这在这里很不情愿)。但我希望将这个逻辑隐藏在一个地方,而不是让 strftime 和 strptime 在我的许多视图中传播。
    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2010-10-18
    • 2012-03-23
    • 1970-01-01
    • 2023-01-10
    • 2021-04-24
    • 2020-12-14
    相关资源
    最近更新 更多