zoukankan      html  css  js  c++  java
  • Google App Engine 中通过自定义Django的filter解决时区问题

    之前的解决办法是在前台界面的js里进行时间的转换,这样做不是很好,还发现在IE中显示会有不正确的时候。因此,打算使用Django自定义filter的方式来做。其中有一些需要注意的事项,一不小心就可能弄错,导致页面出错。

    1. 添加 templatetags 目录。

    需要注意的是:

    1. 目录名必须是:templatetags ,这样Django才能找到它。
    2. 目录templatetags的位置。
      比如:我的App目录为ncblog(app.yaml所在目录),在ncblog目录下,还有一个目录叫nancy,这时,我在nancy目录下建立一个目录templatetags,同时放置一个空的__init__.py。目录结构如下:
      ncblog
              ---- nancy
                      ---- blog
                      ---- templatetags

    2. settings.py中设置INSTALLED_APPS

    为了能找到 templatetags,我们需要在settings.py中的NSTALLED_APPS添加一个路径,比如我添加:

    INSTALLED_APPS = (
        
    'django.contrib.auth',
        
    'django.contrib.contenttypes',
        
    'django.contrib.sites',
        
    'nancy'#我添加的这个
    )

     3. 开始编写我们的filter

    在 templatetags目录下建立任意文件名的文件,如:filters.py,我们现在是要做一个时区的转换filter,因此代码如下:

    from django import template
    from datetime import timedelta
    register 
    = template.Library()
    def timezone(value, offset):
        
    return value + timedelta(hours=offset)
    register.filter(timezone)

    4. 在模板文件的开头加上{% load filters %},然后就可以这样使用了:

    {{log.date|timezone:8|date:"Y-m-d H:i:s"}}
  • 相关阅读:
    laravel MethodNotAllowedHttpException错误一个原因
    laravel查看执行sql的
    二维,多维数组排序array_multisort()函数的使用
    REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR获取客户端IP
    学习正则笔记
    关于apidoc文档生成不了的一个原因
    laravel 表单验证 Exists 规则的基本使用方法
    laravel 500错误的一个解决办法
    关于laravel 用paginate()取值取不到的问题
    C语言寒假大作战02
  • 原文地址:https://www.cnblogs.com/coderzh/p/1354381.html
Copyright © 2011-2022 走看看