2011-08-05 65 views
0

的Django允許用戶指定,像這樣的自定義窗口小部件媒體...是否可以在Django小部件中使用dojo.require()?

class CalendarWidget(forms.TextInput): 
    class Media: 
     js = ('animations.js', 'actions.js') 

截至https://docs.djangoproject.com/en/1.3/topics/forms/media/#media-as-a-static-definition所示,生成的媒體看起來像例子...

<script type="text/javascript" src="http://media.example.com/animations.js"></script> 
<script type="text/javascript" src="http://media.example.com/actions.js"></script> 

的問題是,我使用Dojo和我的小部件的要求是:

<script type="text/javascript"> 
    dojo.require("dijit.form.TextBox");  
</script> 

如何通過Django表單字段小部件生成此腳本標記?現在似乎不可能......這意味着我不能使用Django的甜蜜表單設置,或者我需要切換我的Javascript框架。請幫我做!

回答

0

有兩種方式:要麼reate一個.js文件,該文件僅包含要求,然後將其添加到js清單:通過重寫呈現在你的widget與<script />標籤js = [ …, 'dojo_require_TextBox.js' ],或前綴碼的窗口小部件:

def render(self, *args): 
    result = super(MyWidget, self).render(*args) 
    return "<script>dojo.require(…)</script>" + result 
+0

重寫render()解決了上面的問題和其他許多問題!我一直在嘗試做這樣的事情,但我從來沒有做過渲染()。謝謝! – user846821

相關問題