【问题标题】:Django javascript translation giving error on page loadDjango javascript翻译在页面加载时出错
【发布时间】:2017-07-30 19:08:41
【问题描述】:

这就是我的 urls.py 的样子:

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

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('project.urls')),
    url(r'^login/$', auth_views.login, {'template_name': 'login.html', 'authentication_form': LoginForm}, name = 'login'),
    url(r'^logout/$', auth_views.logout, {'next_page': '/login'}),
    url(r'^i18n/', include('django.conf.urls.i18n')),
]

urlpatterns += i18n_patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )

这是我的 html 中的内容:

<script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' %}"></script>

我已运行 django-admin makemessages -d djangojs -l fr 并对 djangojs.po 文件进行了更改。然后我跑了django-admin compilemessages。我看到了djangojs.mo 文件。当我访问我的站点时,它给了我一个指向上面 HTML 代码行的 AttributeError。我该如何解决这个问题?

【问题讨论】:

    标签: javascript html django


    【解决方案1】:
    from django.conf.urls.i18n import i18n_patterns
    js_info_dict = {
        'domain': 'djangojs',
        'packages': ('project',),
    }
    urlpatterns = i18n_patterns(
        url(r'^jsi18n/$', js_info_dict, name='javascript-catalog'),
    )
    

    在模板中

    `<script type="text/javascript" src="{% url 'javascript-catalog' %}">`</script>
    

    【讨论】:

    • 这给了我一个 TypeError: view must be a callable or a list/tuple in the case of include().
    【解决方案2】:

    对于遇到此问题的其他人,这是我在运行 django-admin makemessages -d djangojs -l frdjango-admin compilemessages 之外解决问题的方法。

    urls.py 应该是这样的:

    from django.views.i18n import JavaScriptCatalog
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^', include('project.urls')),
        url(r'^login/$', auth_views.login, {'template_name': 'login.html', 'authentication_form': LoginForm}, name = 'login'),
        url(r'^logout/$', auth_views.logout, {'next_page': '/login'}),
        url(r'^i18n/', include('django.conf.urls.i18n')),
        url(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
    ]
    

    这应该在模板中:

    <script type="text/javascript" src="{% url 'javascript-catalog' %}"></script>
    

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 1970-01-01
      • 2021-06-22
      • 2020-06-21
      • 2013-07-03
      • 2021-04-11
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多