【问题标题】:How do you place a variable inside a template tag's argument?如何在模板标签的参数中放置一个变量?
【发布时间】:2013-06-17 17:20:31
【问题描述】:

使用 Django 媒体,我可以执行以下操作:

{% for language in LANGUAGES %}
  <script type="text/javascript" src="{{ MEDIA_URL }}app/js/jquery.ui.datepicker.{{ language.0 }}.js"></script>
{% endfor %}

现在,我想切换到静态文件。但是,这(显然)不再起作用了:

{% for language in LANGUAGES %}
  <script type="text/javascript" src="{% static "app/js/jquery.ui.datepicker.{{ language.0 }}.js" %}"></script>
{% endfor %}

有没有一些干净的方法来实现我想要做的事情?

[我想切换以保持一致性,因为我正在使用的管理员和许多第三方应用程序已经切换。另外,我担心 Django 媒体将来会被弃用。 ]

【问题讨论】:

  • 尝试使用{{STATIC_URL}} 而不是{%static%}
  • LANGUAGES 是模型还是其他 Django 相关对象?
  • 如果您不想使用STATIC_URL,您可以创建一个 simple_tag 来为您实现这一目标

标签: django django-templates


【解决方案1】:

你有两个选择。第一个,按照建议,使用{{ STATIC_URL }}

{% for language in LANGUAGES %} 
<script type="text/javascript"
  src="{{STATIC_URL}}app/js/jquery.ui.datepicker.{{ language.0 }}.js"
></script> 
{% endfor %}

或者,{% static %} 只为其参数添加前缀,但并不要求路径实际有效:

{% for language in LANGUAGES %} 
<script type="text/javascript"
  src="{% static "app/js/jquery.ui.datepicker" %}.{{ language.0 }}.js"
></script>                                 
{% endfor %}

【讨论】:

    猜你喜欢
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2018-03-19
    • 1970-01-01
    • 2012-07-13
    • 2014-01-04
    相关资源
    最近更新 更多