使用django将静态URL传递到文件javascript
将{{STATIC_URL}}传递给javascript文件的最佳解决方案是什么 我正在使用django和python 提前谢谢。使用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
关于。
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”设置。在我读了你的评论并添加后,我的应用程序开始工作。谢谢