发布网友 发布时间:2024-09-30 06:09
共1个回答
热心网友 时间:2024-10-23 22:32
导读:很多朋友问到关于django如何存储时间的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
如何使用djangosessionDjango完全支持匿名Session。Session框架允许每一个用户保存并取回数据。它将数据保存在服务器端,并将发送和接收Cookie的操作包装起来。在Cookie中包含的是SessionID,而不是数据本身。
启用Sessions?
Session是通过中间件的方式实现的。
要启用Session的功能,需要完成以下步骤:
修改MIDDLEWARE_CLASSES设置,并确定其中包含了'django.contrib.sessions.middleware.SessionMiddleware'。``django-admin.pystartproject``所创建的缺省的settings.py就已经激活了SessionMiddleware。
将'django.contrib.sessions'添加到你的INSTALLED_APPS设置中,并执行manage.pysyncdb以便安装用于存储Session数据的表格。
ChangedinDjango1.0:如果你并未使用数据库存储Session,则此步骤可以忽略;参考配置Session引擎。
Ifyoudon’twanttousesessions,youmightaswellremovetheSessionMiddlewarelinefromMIDDLEWARE_CLASSESand'django.contrib.sessions'fromyourINSTALLED_APPS.It’llsaveyouasmallbitofoverhead.
配置Session引擎?
NewinDjango1.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)
例子:delrequest.session['fav_color'].ThisraisesKeyErrorifthegivenkeyisn’talreadyinthesession.
__contains__(key)
例子:'fav_color'inrequest.session
get(key,default=None)
例子:fav_color=request.session.get('fav_color','red')
keys()
items()
setdefault()
clear()
NewinDjango1.0:setdefault()和clear()是在这个版本新加的。
django中怎么格式化当前时间datetime.datetime.now()
#2012-03-1511: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)
%H24小时制小时数(0-23)
%I12小时制小时数(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,默认值为'Nj,Y';定义DATETIME_FORMAT,默认值是'Nj,Y,P',定义TIME_FORMAT,默认值为'P'。
如果这些都还不能够满足需求,那么就写一个自定义模板过滤器,或者在模型中定义一个新方法。
Django中对于上传的文件的保存方法(时间+文件名)????????这是在windows环境下,且要加入上传时间,与本来的文件名拼在一起,形成一个整个的文件名,所以,其必须将文件名放在最后,而将时间放在前面,避免与后缀名冲突,除此之外,还要使用time.time()方法,取得时间戳(格式化时间会与windows系统产生冲突),并且最好进行取整,然后再将其转化为字符串与文件名拼起来组成新的文件名,从而进行保存。实例如下:
pythondjangomodels.DateTimeField(auto_now_add=True)数据库存储在模板中用filter进行定义,假设你的在模板中的变量名是value,则
{{value|date:"Y-m-dH:i:s"}}
pythonmktime函数时区这个问题得分成几个子问题
1数据库本身的时区
2数据库里数据的时区
3python代码里的时区
首先对1你可以通过命令去设置数据库的时区像mysql直接用sql语句就能设置
其次对2在存储时间时尽量用timestamp去存储这样读出来可以方便的转成所需用的时区的时间
3python自己的时区比如你用datetime生成时间时需要每次都记得时区设置在django和flask里设置好默认时区
做好这三点才能保证程序和数据库和数据的时区保持统一
结语:以上就是首席CTO笔记为大家整理的关于django如何存储时间的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django如何存储时间的相关内容别忘了在本站进行查找喔。