如何修复Django 1.5中的localflavor弃用警告?

8 投票
3 回答
3259 浏览
提问于 2025-04-17 18:17

我把一个旧的 Django 1.3 版本升级到了 Django 1.5,整体感觉还不错。不过,当我运行 python manage.py runserver 时,出现了一个关于 localflavor 的弃用警告。

...\env\lib\site-packages\django\contrib\localflavor__init__.py:2: 弃用警告:django.contrib.localflavor 已被弃用。请使用单独的 django-localflavor-* 包。
warnings.warn("django.contrib.localflavor 已被弃用。请使用单独的 django-localflavor-* 包。", DeprecationWarning)

我看过 Django 1.5 的发布说明,了解到这个应用现在已经被弃用了。我的问题是,我在项目中并没有使用 localflavor 应用。

我猜可能是其他的应用在某种情况下加载了它(也许是 localeurl 或 modeltranslation?),但我不知道该如何解决这个警告。

  • 怎么知道为什么会出现这个警告?
  • 怎么才能干净利落地解决这个问题?

3 个回答

2

我刚刚遇到过同样的问题。我安装了一个新的软件包(这是美国地区的一个例子):

pip install https://github.com/django/django-localflavor-us/zipball/master

然后我把旧的代码注释掉,换成了新的软件包:

# from django.contrib.localflavor.us.us_states import STATE_CHOICES  <= old
from django_localflavor_us.us_states import STATE_CHOICES
# from django.contrib.localflavor.us.models import USStateField  <= old
from django_localflavor_us.models import USStateField

看起来这个问题解决了。其他语言的软件包可以在这里找到: https://github.com/django

6

更新:

Django现在有一个统一的localflavors包:https://pypi.python.org/pypi/django-localflavor

这里是文档:http://django-localflavor.readthedocs.org/en/latest/

我保留了其余的回复,但现在已经过时了。

你需要下载你使用的所有本地风味包(https://github.com/django/),目前只有三个在pypi上。

然后,你可以用新的方式来使用它们:

from django_localflavor_XX import forms as XX_forms

(其中xx是你喜欢的国家代码)

他们选择把那些库放到一边,因为很多提交(用外语)进入了Django,而发布周期有点长。

Django本身就有墨西哥社会保障号码验证的小工具!

所以这是个好举动,但所有这些包需要尽快由本地社区进行管理,才能使用。

当进行导入时,这个问题会被触发,你可能想记录一下导入的堆栈跟踪,或者看看你是否依赖于一个使用它的Django应用。

所以打开你的Django源代码,去你的contrib.localflavor __init__.py文件。打印出堆栈跟踪,看看问题的导入在哪里。

http://docs.python.org/2/library/traceback.html

希望这能帮到你

6

这是django 1.5中的一个bug。这个警告是django自己引发的。

问题出在 django/contrib/gis/utils/layermapping.py#L19 这行代码上。

这个问题在django的最新版本中已经修复了(通过完全移除localflavor)。

你可以通过在你的日志配置中添加一个忽略设置来消除这个警告:

import warnings
warnings.filterwarnings('ignore', r"django.contrib.localflavor is deprecated")

撰写回答