私はカスタムウィジェットのレンダリングされたhtmlページにjavascriptコードを持っています。 jsコードをjsファイルに区切りたいカスタムウィジェットのdjango動的javadript
ただし、静的メディアファイルではなく動的である必要があります。
私は、カスタムウィジェットを書いた:
class CustomWidget(CustomWidgetBase):
css = {
'all': (
config['custom_css'] +
config['extra_css']
)
}
js = (
config['custom_js'] +
config['extra_js']
)
@property
def media(self):
media = super(CustomWidget, self).media
media.add_css(CustomWidget.css)
media.add_js(CustomWidget.js)
return media
def render(self, name, value, attrs=None):
attrs_for_textarea = attrs.copy()
attrs_for_textarea['hidden'] = 'true'
attrs_for_textarea['id'] += '-textarea'
html = super(CustomWidget, self).render(name, value, attrs_for_textarea)
html += render_to_string(
'app/custom_widget.html',
{
'id': attrs['id'].replace('-', '_'),
'id_src': attrs['id'],
'value': value if value else '',
'settings': json.dumps(self.template_contexts()),
'STATIC_URL': settings.STATIC_URL,
'CSRF_COOKIE_NAME': settings.CSRF_COOKIE_NAME,
}
)
CustomWidget.js += (os.path.join(settings.STATIC_URL, 'app/my.js'),)
return mark_safe(html)
'アプリ/ custom_widget.htmlは' JavaScriptのコードを持っています
{% load staticfiles %}
<div id='{{ id_src }}'>{{ value|safe }}</div>
<script>
$(function() {
var {{ id }}_textarea = window.document.getElementById('{{ id_src }}-textarea');
... omitted ...
私は「アプリ/ custom_widget.htmlにjavascriptのコードを移動したいのですが'を' app/my.js 'に置き換えます。これは、ウィジェットコードをjavascript宣言の順序に依存させるためです。
したがって、 'app/my.js'は、Djangoビューによって渡された値で動的に生成される必要があります。私は 'app/my.js'をページの下部に配置したいと思います。
ありがとうございます。
あなたの質問は何ですが? –
@JahongirRahmonov app/custom_widget.htmlのjavascriptコードをapp/my.jsファイルに移動したいと思います。 – nasiajai