django的用户时区自动检测

django-tz-detect的Python项目详细描述


此应用程序将使用javascript自动检测用户的时区,然后 相应地配置django的时区本地化系统。作为一个 结果,显示给用户的日期将在其本地时区中。

作者是Adam Charnock,还有一些伟大的contributors

https://img.shields.io/pypi/v/django-tz-detect.svghttps://img.shields.io/pypi/dm/django-tz-detect.svghttps://img.shields.io/github/license/adamcharnock/django-tz-detect.svghttps://img.shields.io/travis/adamcharnock/django-tz-detect.svghttps://coveralls.io/repos/adamcharnock/django-tz-detect/badge.svg?branch=develop

工作原理

在第一个页面视图中,您应该发现tz_detect放置了 使用 插入的模板标记。脚本将获取用户的gmt 使用getTimezoneOffset偏移,并将其发回django。这个 偏移量存储在用户的会话和django的时区感知中 在中间件中配置。

javascript将不会在以后的请求中显示。

安装

  1. 从github签出tz_detect,或使用pip安装:

    pip install django-tz-detect
    
  2. tz_detect添加到INSTALLED_APPS

    INSTALLED_APPS+=('tz_detect',)
  3. 确保有django.template.context_processors.request处理器

    TEMPLATES=[{...'OPTIONS':{'context_processors':[...'django.template.context_processors.request',],},},]
  4. 更新您的urls.py文件:

    urlpatterns+=[url(r'^tz_detect/',include('tz_detect.urls')),]
  5. 将检测模板标记添加到站点中,理想情况下是在基本布局中的</body>标记之前:

    {%loadtz_detect%}{%tz_detect%}
  6. TimezoneMiddleware添加到MIDDLEWARE

    importdjangoMIDDLEWARE+=('tz_detect.middleware.TimezoneMiddleware',)ifdjango.VERSION<(1,10):MIDDLEWARE_CLASSES+=('tz_detect.middleware.TimezoneMiddleware',)
  7. (可选)配置应用程序最常用的国家/地区:

    # These countries will be prioritized in the search# for a matching timezone. Consider putting your# app's most popular countries first.# Defaults to the top Internet using countries.TZ_DETECT_COUNTRIES=('CN','US','IN','JP','BR','RU','DE','FR','GB')

请参阅example应用程序。此应用程序用于手动 测试此软件包的功能。这也是一个好的 例子。

你只需要django 1.8或更高版本就可以运行它。可能会用老的 版本,但未经测试。

注意事项

  • Django的时区感知功能在第一页视图中不可用
  • 此方法需要javascript
  • 时区检测完全从用户的GMT偏移量进行,而不是从其位置进行

未来扩张

  • 允许对用户存储时区的挂钩
  • 允许手动指定时区
  • 改进时区检测
  • 可以选择使用HTML5的位置API来更好地确定时区

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android同步不同页面上的按钮   java评测每个类收集的垃圾对象实例数   java(Spring MVC+Hibernate 4+Test 4)自动连线DAO返回NULL   java Android编辑文本和虚拟键盘   java Selenium与BrowserMobProxy   JAVAlang.NoClassDefFoundError:com/sun/jersey/spi/inject/Errors$关闭原因?   java为什么在我成功登录后仍然会出现“不正确的帐户或密码或用户类型”   安卓应用程序在重新启动java时崩溃。网UnknownHostException:无法解析主机   多线程在Java中同步共享静态对象的正确方法是什么?   未调用自定义注释的java类验证(约束类)   java如何将指定目录的存档文件放入所需位置?   java如何识别Selenium中的每个编辑文本字段,如果它们的Xpath都相同   使用gwtmockito/mockito的java简单单选按钮单元测试?