使用django将静态URL传递到文件javascript

使用django将静态URL传递到文件javascript,javascript,python,django,static,Javascript,Python,Django,Static,将{{STATIC_URL}}传递给javascript文件的最佳解决方案是什么 我正在使用django和python 提前谢谢。 关于。django compressor通过将所有必需的JS或CSS压缩到一个文件中并优化文件大小,您可以做到这一点,也可以优化您的站点 更新:默认情况下,压缩程序将使用静态URL将相对URL转换为绝对URL。如果下载开发版本,它会附带一个django模板引擎解析器,允许您直接在CSS文件中使用所有django模板代码,例如{%static%}标记 安装后在set

将{{STATIC_URL}}传递给javascript文件的最佳解决方案是什么

我正在使用django和python

提前谢谢。
关于。

django compressor
通过将所有必需的JS或CSS压缩到一个文件中并优化文件大小,您可以做到这一点,也可以优化您的站点

更新:默认情况下,压缩程序将使用
静态URL
将相对URL转换为绝对URL。如果下载开发版本,它会附带一个django模板引擎解析器,允许您直接在CSS文件中使用所有django模板代码,例如
{%static%}
标记

安装后在settings.py中启用
TemplateFilter
,通过模板引擎解析js或css文件

COMPRESS_JS_FILTERS = [
    'compressor.filters.template.TemplateFilter',
]
COMPRESS_JS_FILTERS = [
    'compressor.filters.template.TemplateFilter',
]
现在,django模板语言将解析
{%compress JS%}
块中的任何JS

{% compress js %}
    <script src="/my_script.js" type="text/javascript"></script>
{% endcompress %}

// my_script.js
alert('{{ STATIC_URL|escapejs }}');
{%compress js%}
{%endcompress%}
//my_script.js
警报({STATIC_URL | escapejs}}});

你要求的是最好的方法,我认为这是最好的。当然比提供动态文件要好。

使用带有静态url值的全局javascript变量更简单:

<script language="javascript">var STATIC_URL = "{{ STATIC_URL|escapejs }}";</script>
<script src="{{ STATIC_URL }}js/myfile.js"></script>
var STATIC_URL=“{{STATIC_URL}escapejs}”;
然后,只需在myfile.js中调用static_url即可使用静态url:

html = '<img src="'+STATIC_URL+'/icons/flags/tn.gif">';
html=”;

我认为这是对@Yuji'Tomita'Tomita的评论的补充,作为一个完整的设置。

这对我有用

这就是我如何在django js文件中使用静态URL完整设置django compressor的方法

将“压缩程序”添加到已安装的应用程序设置:

INSTALLED_APPS = (
    # other apps
    "compressor",
)
要在调试模式下测试压缩,请在settings.py中:

COMPRESS_ENABLED = True
如果使用Django的staticfiles contrib应用程序(或其独立对应的Django staticfiles),则必须将Django Compressor的文件查找器添加到staticfiles\u查找器设置中,例如使用Django.contrib.staticfiles:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    # other finders..
    'compressor.finders.CompressorFinder',
)
安装后在settings.py中启用TemplateFilter,以便通过模板引擎解析js或css文件

COMPRESS_JS_FILTERS = [
    'compressor.filters.template.TemplateFilter',
]
COMPRESS_JS_FILTERS = [
    'compressor.filters.template.TemplateFilter',
]
现在,{%compress JS%}块中的任何JS都将被django模板语言解析

{% load compress %}

{% compress js %}
    <script src="/my_script.js" type="text/javascript"></script>
{% endcompress %}

// my_script.js

alert('{{ STATIC_URL|escapejs }}');
{%load compress%}
{%js%}
{%endcompress%}
//my_script.js
警报({STATIC_URL | escapejs}}});

您的意思是将javascript文件加载到模板中吗?或者你的意思是在javascript文件中使用{STATIC_URL}}的值?这是一个很棒的建议!django压缩机是一个很酷的项目。@slypete,是的,它太棒了!优化文件数量、文件大小,甚至添加模板变量。明亮的这是我最新的大型django游戏改变者。。下一步是什么!?我真的很喜欢这个工具——一个注意事项是使用“pip install django_compressor”安装它,而不是从github克隆它——设置起来只花了不到10分钟的时间。我唯一的问题是在我的settings.py中显式设置“COMPRESS\u ENABLED=True”。。。就像您已经从其他应用程序中获得了DEBUG=True一样,它将读取该值而不是实际压缩。我已经设置了所有选项,并且文件被连接和压缩。问题是,只要我添加
compress_JS_FILTERS
以使此代码在JS文件中工作:
{{STATIC_URL | escapejs}
然后将文件连接起来,但不再压缩。我错过了什么?我喜欢这个解决方案!我正在阅读文档,但没有在那里找到“STATICFILES\u FINDERS”设置。在我读了你的评论并添加后,我的应用程序开始工作。谢谢