Skip to main content
 首页 » 编程设计

python之为 Django 小部件动态设置媒体

2024年10月25日24mfrbuaa

是否可以在 Widget 中的 __init__ 中添加媒体?

我需要找到页面的语言并将其传递给小部件,但处理请求的中间件似乎在媒体初始化后起作用。

所以,基本上我有:

class SimpleMiddleware(): 
    # some code for getting language... 
 
 
class MyWidget(Widget): 
 
    class Media: 
        js = ( 
            '//some source&language='+translation.get_language(), 
        ) 

translation.get_language 给出了错误的语言,因为中间件没有在媒体之前执行代码。

请您参考如下方法:

您需要set media as a dynamic property :

class MyWidget(Widget):     
    def _media(self): 
        return forms.Media(js=( 
            '//some source&language='+translation.get_language(), 
        )) 
    media = property(_media)