麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
702
2023-12-15
导读:很多朋友问到关于django如何存储时间的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!如何使用django sessionDjango 完全支持匿名 Session。
Session 框架允许每一个用户保存并取回数据它将数据保存在服务器端,并将发送和接收 Cookie 的操作包装起来在 Cookie 中包含的是 Session ID,而不是数据本身启用 Sessions¶
Session 是通过 中间件 的方式实现的要启用 Session 的功能,需要完成以下步骤:修改 MIDDLEWARE_CLASSES 设置,并确定其中包含了django.contrib.sessions.middleware.SessionMiddleware 。
``django-admin.py startproject`` 所创建的缺省的 settings.py 就已经激活了 SessionMiddleware 将 django.contrib.sessions 添加到你的 INSTALLED_APPS 设置中,并执行 manage.py syncdb以便安装用于存储 Session 数据的表格。
Changed in Django 1.0: 如果你并未使用数据库存储 Session,则此步骤可以忽略;参考 配置 Session 引擎If you don’t want to use sessions, you might as well remove the SessionMiddleware line fromMIDDLEWARE_CLASSES and django.contrib.sessions from your INSTALLED_APPS. It’ll save you a small bit of overhead.。
配置 Session 引擎¶New in Django 1.0..缺省情况下,Django 将 Session 存储在数据库中 (使用模型django.contrib.sessions.models.Session)。
尽管这很方便,但在某些情况下,把 Session 放在其它的地方速度会更快因此 Django 允许您通过配置让它将 Session 数据保存在文件系统或缓冲区中使用基于文件的 Session¶要使用基于文件的 Session,请将 SESSION_ENGINE 设置为"django.contrib.sessions.backends.file" 。
您可能还需要修改 SESSION_FILE_PATH 这一设置以便控制 Django 存储 Session 文件的位置,缺省情况下,它使用 tempfile.gettempdir() ,通常是 /tmp 。
使用基于缓冲区的 Session¶要使用 Django 的缓冲区系统来保存 Session,需要将 SESSION_ENGINE 设置为"django.contrib.sessions.backends.cache" 。
您必须确保您已经配置了缓冲区,详情请参考 缓冲区文档 Note只有在使用 Memcached 作为缓冲后台时,才能使用基于缓冲区的 Session因为以本地内存作为缓冲后台时,它存储缓冲数据的时间太短了,这样直接访问文件或数据库的速度,要比通过缓冲区访问文件或数据库的速度更快一些。
在视图中使用 Session¶在开启 SessionMiddleware 后,每一个 HttpRequest 对象 (Django 视图函数的第一个参数) 救火有一个session 属性,它是一个类字典对象。
您可以直接对其读写Session 对象有以下标准字典函数:__getitem__(key)例子: fav_color = request.session[fav_color]__setitem__(key, value)
例子: request.session[fav_color] = blue__delitem__(key)例子: del request.session[fav_color]. This raises KeyError if the given key isn’t already in the session.
__contains__(key)例子: fav_color in request.sessionget(key, default=None)例子: fav_color = request.session.get(fav_color, red)
keys()items()setdefault()clear()New in Django 1.0: setdefault() 和 clear() 是在这个版本新加的django中怎么格式化当前时间datetime.datetime.now()
#2012-03-15 11:50:57.728000这个会返回 microsecond因此这个是我们不需要的所以得做一下修改datetime.datetime.now().strftime("%Y-%m-%d %H:%I:%S");。
格式化之后,就得到了我们常见的格式了附:strftime参数strftime(format[, tuple]) - string将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出。
python中时间日期格式化符号:%y 两位数的年份表示(00-99)%Y 四位数的年份表示(000-9999)%m 月份(01-12)%d 月内中的一天(0-31)%H 24小时制小时数(0-23)%I 12小时制小时数(01-12)
%M 分钟数(00=59)%S 秒(00-59)%a 本地简化星期名称%A 本地完整星期名称%b 本地简化的月份名称%B 本地完整的月份名称%c 本地相应的日期表示和时间表示%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符%U 一年中的星期数(00-53)星期天为星期的开始%w 星期(0-6),星期天为星期的开始%W 一年中的星期数(00-53)星期一为星期的开始%x 本地相应的日期表示
%X 本地相应的时间表示%Z 当前时区的名称%% %号本身用django定义自动插入的时间显示格式怎么调在模板中可以使用time和date过滤器格式化时间,如:{{ example_date | date:”F
j, Y” }}可以在settings里定义DATE_FORMAT,默认值为 N j, Y;定义DATETIME_FORMAT,默认值是 N j, Y, P,定义TIME_FORMAT,默认值为P如果这些都还不能够满足需求,那么就写一个自定义模板过滤器,或者在模型中定义一个新方法。
Django中对于上传的文件的保存方法(时间+文件名) 这是在windows环境下,且要加入上传时间,与本来的文件名拼在一起,形成一个整个的文件名,所以,其必须将文件名放在最后,而将时间放在前面,避免与后缀名冲突,除此之外,还要使用time.time()方法,取得时间戳(格式化时间会与windows系统产生冲突),并且最好进行取整,然后再将其转化为字符串与文件名拼起来组成新的文件名,从而进行保存。
实例如下:python django models.DateTimeField(auto_now_add=True) 数据库存储在模板中用filter进行定义,假设你的在模板中的变量名是value,则{{value|date:"Y-m-d H:i:s"}}
pythonmktime 函数 时区这个问题得分成几个子问题 1 数据库本身的时区 2 数据库里数据的时区 3 python代码里的时区 首先对1你可以通过命令去设置数据库的时区 像mysql直接用sql语句就能设置
其次对2 在存储时间时尽量用timestamp去存储 这样读出来可以方便的转成所需用的时区的时间 3 python自己的时区 比如你用datetime生成时间时需要每次都记得时区设置 在django和flask里设置好默认时区
做好这三点才能保证程序和数据库和数据的时区保持统一
结语:以上就是首席CTO笔记为大家整理的关于django如何存储时间的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django如何存储时间的相关内容别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。