2016-05-24 3 views
0

Это немного странно. Я использую Django 1.9.6, и мне не нравится мой URL-адрес i18n javascript_catalog после того, как я изменил его из устаревшего синтаксиса 1.7 (я, наконец, решил, что должен что-то сделать, чтобы «не собирался работать в django 1.10». время I runsrever). Вот что я получил:django KeyError для моего i18n javascript catalog url

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' 

Я не могу удалить ключ 'packages' из django_info_dict, потому что он вызывает NoReverseMatch ошибку: Reverse for 'javascript_catalog' with arguments '()' and keyword arguments '{}' not found.

Как и следовало ожидать, вот где это происходит в шаблоне.html:

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

Это в значительной степени копия от docs. У меня есть представление django.views.i18n.javascript_catalog и имя в URL-адресе ... что я здесь не вижу?

+0

Что вы пытаетесь соответствовать с 'packages'? – Sayse

+0

мое приложение - есть только один в этом urls.py. – Escher

ответ

1

Я думал, что ключ 'packages' относится к ключевому слову js_info_dict. В этой ошибке он фактически ссылался на группу regex для захвата с именем packages. Динамическая packages переменная не нужна, потому что я указал статический пакет my_app в js_info_dict, следовательно, правильный образец URL для использования был:

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