【问题标题】:Django: accessing raw urls of form media in templatesDjango:在模板中访问表单媒体的原始 url
【发布时间】:2013-06-26 09:44:38
【问题描述】:

{{ form.media.js }}{{ form.media.css }} 非常适合在 Django 模板中轻松包含媒体。

我的问题是我想访问这些媒体的原始网址(不带<\script type="text/javascript" src="raw_url"><\/script>)(使用headjs 包含它们)。

我想实现这样的目标:

<script>
{% for script in form.media.js %}
    head.js("{{ script.raw_url }}");
{% endfor %}
</script>

【问题讨论】:

  • 此外,调用 head.js 的次数与您拥有的脚本数量一样多,不会给您带来任何好处。 headjs.com
  • 我认为你没有理解我的问题:“{{ script.raw_url }}”在 django 中不存在。你只有一个块 {{ form.media.js }},它被替换为: ... 我想得到这个“url1”
  • 我想以这种方式调用 head.js 以便并行加载脚本。
  • 我刚刚找到这个网址,它解释了与我相同的问题:groups.google.com/forum/#!topic/django-developers/QD1wSWV3qEQ 似乎没有任何解决方案:(
  • @geux,我知道你想调用 head.js,但我在我的评论中发布了一个文档链接 - 你应该像 head.js(script_url_1, script_url_2, ..., script_url_n, optional_callback) 一样调用它一次。您的循环将输出多个 head.js 调用。

标签: python django django-forms django-templates


【解决方案1】:

如果你看一下Media类的源代码就会有一个函数:

def render_js(self):
    return [u'<script type="text/javascript" src="%s"></script>' % self.absolute_path(path) for path in self._js]

所以你可以走同样的路。由于我们不能在模板中使用下划线属性,我们可以像这样向表单类添加方法并使用它:

from django import forms

class TestForm(forms.Form):
    def get_media_js(self):
        return [self.media.absolute_path(path) for path in self.media._js]

【讨论】:

    猜你喜欢
    • 2021-01-25
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 2019-02-10
    • 2017-12-19
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多