JS 发送带有 django 标签的 html

Posted

技术标签:

【中文标题】JS 发送带有 django 标签的 html【英文标题】:JS send html with django tags 【发布时间】:2019-11-28 06:22:29 【问题描述】:

我在 JS 中创建小部件。我想通过 jquery.html() 方法发送 html。但我也在使用 django trans 标签。

这是我在 html 端创建小部件代码后:

<div class="modal-header" style="padding: 5px;padding-left: 25px;">
    <h5 class="modal-title" id="componentName">% trans "Report" %</h5>
</div>

这是我在 JS 端的代码

html = '<div class="modal-header" style="padding: 5px;padding-left: 25px;">'+
      '<h5 class="modal-title" id="'+IdCreateHelper(component_names[i])+'">'+'% trans "'+component_names[i]+'" %'+'</h5>'+
'</div>'

$('#'+modal_id).html(html);

我想在 JS 端创建 django 标签,但结果是:

% trans "Reports" %
<h5 class="modal-title" id="componentName">% trans "Report" %</h5>

我想在js中创建django标签

【问题讨论】:

您需要 django 模板中的 js,而不是单独的 js 文件 我的解决方案:国际化:在 javascript 代码 i18n 中 【参考方案1】:

我认为最简洁的解决方案是使用 Django 模板上下文在 DOM 中传递 JSON 对象。

那么,一步一步来:

创建您的翻译服务器端:

from django.utils.translation import gettext as _

translations = 
    'report': _('Report')

将它们传递给上下文:

return render(request, 'mytemplate.html', context='translations': translations)

现在,如果您使用的是 Django > 2.1.X,您可以使用此过滤器 https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#json-script 在模板中呈现您的翻译:

 translations|json_script:"my-translations" 

现在你可以从你的 JS 访问你的翻译:

var translations = JSON.parse(document.getElementById('my-translations').textContent);
console.log(translations.report)

这是一个非常可扩展的解决方案,适用于您的所有翻译,未来要翻译的单词越来越多……

【讨论】:

【参考方案2】:

你要做的是在服务器端翻译字符串,你可以用下面的代码来做:

from django.utils.translation import gettext as _

html = '<div class="modal-header" style="padding: 5px;padding-left: 25px;">' + 
'<h5 class="modal-title" id="' + IdCreateHelper(component_names[i]) + '">' + 
_(str(component_names[i])) +'" %'+'</h5>'+'</div>'

【讨论】:

以上是关于JS 发送带有 django 标签的 html的主要内容,如果未能解决你的问题,请参考以下文章

Django:将带有 HTML 和 Django 模板标签的 Views.py 中的字符串变量注入 HTML 文件

如何发送带有 HTML 标签的电子邮件,而不是 C# 中的 HTML 纯文本

在视图而不是模板中生成带有 Django 静态 url 的图像标签

如何在 Django 模板中的“带有模板标签”中设置 Django 渲染块值?

django上传图片并且带有预览功能

使用 Django 和 html5 标签播放视频