Django forms.media从pip安装的app

时间:2017-09-07 13:51:07

标签: python django django-forms virtualenv

我创建了一个自定义的python应用程序包,它是我可以在我的Django项目中使用的自定义小部件。自定义小部件是从我的requirements.txt安装的pip,可以在我的环境文件夹env / lib / python2.7 / site-packages / custom_widget中找到...里面有一个带有js和css文件的静态文件夹。 forms.Widget对象本身是使用自己的表单资源创建的。见下文:

    css = {
        'all': (
            'css/datatables/dataTables.bootstrap.css',
            'css/custom-widget.css',
        ),
    }
    js = (
        'js/plugins/datatables/jquery.dataTables.js',
        'js/plugins/datatables/dataTables.bootstrap.js',
        'js/custom-widget.js',
    )

dataTables css和js是我的Django Project staticfiles目录中的旧版本。我的Django项目中的其他位置使用较新版本的数据表。当我在我的项目下的应用程序中使用窗口小部件并尝试使用{{form.media}}将表单资源包含在模板中时,它会从我的Django Project staticfiles目录中提取dataTables css和js,而不是在下面定义的静态目录中。我的自定义小部件这是一个问题,因为它们是不同的版本,我的窗口小部件行为不正确。我想知道是否有办法从已安装pip的自定义应用程序中提取资产,而不是从我的设置中定义的静态文件中提取STATICFILES_DIRS

1 个答案:

答案 0 :(得分:1)

静态文件应用程序目录查找程序将使用任何匹配的文件 - 您无法指定要使用的应用程序。

您可以将自定义窗口小部件文件从static移动到static/custom_widget,然后更新媒体类以包含新的前缀。

css = {
    'all': (
        'custom_widget/css/datatables/dataTables.bootstrap.css',
        'custom_widget/css/custom-widget.css',
    ),
}
js = (
    'custom_widget/js/plugins/datatables/jquery.dataTables.js',
    'custom_widget/js/plugins/datatables/dataTables.bootstrap.js',
    'custom_widget/js/custom-widget.js',
)