Javascript Django3:动态生成我可以在HTML页面中使用的js

Javascript Django3:动态生成我可以在HTML页面中使用的js,javascript,django,Javascript,Django,正如我们所知,在Django框架中,我们可以基于一些预定义的模板文件生成HTML页面。 在这些模板中,我们可以使用一些特定的django关键字/运算符/函数。 比如: 因此,我可以确定页面的最终内容将使用一些预定义的语言。 我使用这些标记的地方不同:“简单”html内容,带有/和etc标记和内联javascripts块。比如: <script type="text/javascript"> $('#datepicker_value').on('change', f

正如我们所知,在Django框架中,我们可以基于一些预定义的模板文件生成HTML页面。 在这些模板中,我们可以使用一些特定的django关键字/运算符/函数。 比如:

因此,我可以确定页面的最终内容将使用一些预定义的语言。 我使用这些标记的地方不同:“简单”html内容,带有/和etc标记和内联javascripts块。比如:

<script type="text/javascript">
$('#datepicker_value').on('change', function(){
....
                var dialog = BootstrapModalWrapperFactory.createModal({
                    title: '{% trans 'Extended information about the event' %}',
                    message: '<pre>'+JSON.stringify(info.event.extendedProps.description, null, 4)+'</pre>',
                    buttons: [
                        {
                            label: '{% trans 'Close' %}',
                            cssClass: "btn btn-secondary",
                            action: function (button, buttonData, originalEvent) {
                                return this.hide();
                            }
                        }
                    ]
                });
....
</script>

$('#datepicker_value')。在('change',function()上{
....
var dialog=bootstrapmodallwrapperfactory.createModal({
标题:“{%trans”有关事件“%”的扩展信息,
消息:“”+JSON.stringify(info.event.extendedProps.description,null,4)+“”,
<script type="text/javascript" src="{% url 'GLOBAL.js' %}"></script>
按钮:[ { 标签:“{%trans”关闭“%}”, cssClass:“btn btn次要”, 动作:功能(按钮、按钮数据、原始事件){ 返回这个。hide(); } } ] }); ....
所以我这里的主要问题是: 如何正确地将html模板中的所有
..
块移动到外部JS文件中? 为了保持django框架的所有功能正常工作!我的第一个变体是-我应该使用与生成具有django框架功能的HTML相同的技术。但是,也许可以使用一个稍微缩短的变体:就在views.py文件中-我能以某种方式正确地动态生成GLOBAL.js文件的完整内容吗s ALL…来自html模板的块-它们都是以前存储的。 以这样的方式-标准django模板引擎可以转换所有{%..…%}在生成并给出GLOBAL.js的全部内容之前,在正确的真实内容中插入占位符。尤其是可翻译占位符的内容!!!那么,在HTML页面模板中,我可以插入一个对特殊命令的调用,该命令可以在浏览器在客户端。类似于:

from django.shortcuts import render

def render_javascript(request):
    return render(request, 'myapp/global.js', {})

我是对的吗?如果是的话,我如何一步一步地做到这一点?或者也许有新的更符合逻辑的方法? Django版本是最新的!!!3*


另外,我还遇到了一个问题,就是用document.addEventListener('DOMContentLoaded',function(){…})等内容传输脚本块;看起来这样的事件处理程序无法从HTML页面移到单独的JS文件中((

没有理由不能在Javascript文件中使用Django模板标记)(或任何其他文件类型)。例如,下面是一个返回渲染Javascript的视图:

urlpatterns = [
    path("js/global.js", render_javascript, name="globaljs"),
]
如果将此视图挂接到
urlpatterns
中,如下所示:

<script type="text/javascript" src="{% url 'globaljs' %}"></script>
然后,您可以使用
{%url%}
模板标记从
HTML
模板中引用它,如下所示:

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

现在,当浏览器请求
js/global.js
时,Django视图将获取模板
myapp/global.js
,使用模板系统处理它,并返回呈现的模板

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