我的 i18n javascript 目录 url 的 django KeyError

django KeyError for my i18n javascript catalog url

这有点奇怪。我正在使用 Django 1.9.6,在我从过时的 1.7 语法更改它之后它不喜欢我的 i18n javascript_catalog url(我最终决定我应该做一些事情 "not gonna work in django 1.10" 每次 runsrever) 都会收到警告。这是我得到的:

urls.py

from django.views.i18n import javascript_catalog

js_info_dict = {
    'domain': 'djangojs',
    'packages': ('my_app',),
}

urlpatterns = [
    url(r'^jsi18n/(?P<packages>\S+?)/$', 
        javascript_catalog, js_info_dict, name='javascript_catalog'),

]

尝试渲染时:

KeyError at /my_app/my_url/
'packages'

我无法从 django_info_dict 中删除 'packages' 键,因为它会导致 NoReverseMatch 错误:Reverse for 'javascript_catalog' with arguments '()' and keyword arguments '{}' not found.

如您所料,它出现在 template.html 中:

<script src="{% url 'javascript_catalog' %}"></script>

这几乎是 docs 的复制粘贴。我有 django.views.i18n.javascript_catalog 视图和 url 中的名称......我在这里忽略了什么?

我认为 'packages' 键指的是 js_info_dict 中的键。在错误中,它实际上引用了名为 packages 的捕获正则表达式组。不需要动态 packages 变量,因为我在 js_info_dict 中指定了静态包 my_app,因此要使用的正确 url 模式是:

url(r'^jsi18n/$', javascript_catalog, js_info_dict, name='javascript_catalog'),