如何修复Django 1.5中的localflavor弃用警告?
我把一个旧的 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 个回答
我刚刚遇到过同样的问题。我安装了一个新的软件包(这是美国地区的一个例子):
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
更新:
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
希望这能帮到你
这是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")