django javascript本地化问题

use*_*549 2 django

我目前正在为我的项目使用django 1.3.我正在研究项目的本地化.我能够本地化python代码和模板,但我在使用javascript本地化时遇到了麻烦.我收到TemplateSyntaxError消息,说"渲染时捕获NoReverseMatch:反向''django.views.i18n.javascript_catalog'',参数'()'和关键字参数'{}'未找到." 我将url.py的一部分和下面的模板home.html代码放在一起.我使用python manage.py shell检查了django.views.i18n.javascript_catalog,这很好.

你能告诉我我做错了什么吗?

不应该在模板中的url函数导致http:/// jsi18n /?

谢谢!

=== urls.py ===

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

urlpatterns = patterns('',

    url(r'^$', 'messages.views.home', name='home'),
    url(r'^messages/$', include('messages.urls')),

    # Localization
    url(r'^i18n/', include('django.conf.urls.i18n')),
    url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
)
Run Code Online (Sandbox Code Playgroud)

===结束===

=== home.html ===

<body>
    <script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' %}"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

===结束===

use*_*549 7

我终于找到了这个错误的原因.该错误与本地化无关.如果你改变了

<script... {% url 'django.views.i18n.javascript_catalog' %}"></script>
Run Code Online (Sandbox Code Playgroud)

<script... {% url django.views.i18n.javascript_catalog %}"></script>
Run Code Online (Sandbox Code Playgroud)

错误消失了.

请注意urls.py,它是

url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
Run Code Online (Sandbox Code Playgroud)

简而言之,在html模板文件中,周围没有引号django.views.i18n.javascript_catalogurls.py文件引用django.views.i18n.javascript_catalog.在此之后,我能够使javascript翻译工作.

  • 这取决于你是否在模板顶部写了`{%load url from future%}`.我建议您添加该代码段并引用所有视图路径.请参阅[`url`标签](https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#url)文档下的"前向兼容性"侧栏. (2认同)