跳转到主要内容

为django自动检测用户时区

项目描述

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

此应用程序将使用JavaScript自动检测用户的时区,然后相应地配置Django的时区本地化系统。结果,显示给用户的日期将显示为他们的本地时区。

Adam Charnock编写,以及一些优秀的贡献者

工作原理

在第一次页面浏览时,您应该会发现 tz_detect 使用您插入的模板标签将一段异步JavaScript代码放入您的页面中。该脚本将使用 getTimezoneOffset 获取用户的GMT偏移量,并将其发送回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 += [
        path('tz_detect/', include('tz_detect.urls')),
    ]
  5. 将检测模板标签添加到您的站点,理想情况下在基础布局的 </body> 标签之前。

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

    import django
    
    MIDDLEWARE += (
        'tz_detect.middleware.TimezoneMiddleware',
    )
    
    if django.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')

请参阅 示例 应用程序。该应用程序用于手动测试此包的功能。这也可以作为一个很好的示例。

您只需要Django 1.8或更高版本即可运行。它可能在旧版本上运行,但未经过测试。

注意事项

  • Django的时区感知在第一次页面浏览时不可用。

  • 此方法需要JavaScript。

  • 时区检测完全基于用户的GMT偏移量,而不是他们的位置。

未来扩展

  • 一个钩子,允许将时区存储在用户处

  • 允许手动指定时区

  • 改进时区检测

  • 可选地使用HTML5的位置API进行更好的时区确定

项目详情


下载文件

下载适合您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

django-tz-detect-0.5.0.tar.gz (11.3 kB 查看散列)

上传时间

构建分布

django_tz_detect-0.5.0-py3-none-any.whl (11.7 kB 查看散列)

上传时间 Python 3

由以下支持