繁体   English   中英

使用django将STATIC_URL传递给文件javascript

[英]Passing STATIC_URL to file javascript with django

哪个是将{{STATIC_URL}}传递给javascript文件的最佳解决方案?

我正在使用django和python。

提前致谢。 问候。

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

<script language="javascript">var STATIC_URL = "{{ STATIC_URL|escapejs }}";</script>
<script src="{{ STATIC_URL }}js/myfile.js"></script>

然后,您可以通过调用myfile.js中的STATIC_URL来简单地使用静态URL:

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

django-compressor允许您通过将所有必需的JS或CSS压缩到一个文件并优化文件大小来实现此目的并优化您的站点。

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

https://github.com/jezdez/django_compressor

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

COMPRESS_JS_FILTERS = [
    'compressor.filters.template.TemplateFilter',
]

现在, {% compress js %}块中的任何JS都将被django模板语言解析...

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

// my_script.js
alert('{{ STATIC_URL|escapejs }}');

你问了最好的方法 - 我认为这是最好的。 当然比提供动态文件更好。

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

这对我有用。

这就是我在django js文件中使用STATIC_URL完全设置django压缩器的方法。

https://github.com/jezdez/django_compressor

pip install django_compressor

将“压缩器”添加到INSTALLED_APPS设置:

INSTALLED_APPS = (
    # other apps
    "compressor",
)

要在调试模式下测试压缩,请在settings.py中:

COMPRESS_ENABLED = True

如果您使用Django的staticfiles contrib app(或其独立对应的django-staticfiles),您必须将Django Compressor的文件查找器添加到STATICFILES_FINDERS设置,例如使用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%}块中的任何JS都将被django模板语言解析...

{% load compress %}

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

// my_script.js

alert('{{ STATIC_URL|escapejs }}');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM