如何强制 Django 使用 CDN 中的 select2 而不是本地管理员版本?

Posted

技术标签:

【中文标题】如何强制 Django 使用 CDN 中的 select2 而不是本地管理员版本?【英文标题】:How to force Django to use select2 from the CDN instead of the local admin version? 【发布时间】:2020-10-10 12:49:55 【问题描述】:

我正在尝试使用Django 实现一个网站。我使用select2 作为我的组件之一。我的问题是,在渲染模板时,Django 使用来自adminselect2,它住在这里:Click here to go to GitHub code。我想使用从 CDN 加载的select2,因为它较新,而且我想传递额外的参数。

这是我的代码(我删除了不必要的部分以使其更简单):

core/templates/core/base.html:

<!DOCTYPE html>
% load static %
<html>
<head>
    <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet"/>
    <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>
</head>
<body>
% block content %
% endblock %
% block scripts %
% endblock %
</body>
</html>

app_name/templates/app_name/template_name.html:

% extends 'core/base.html' %
% block content %
    <form method="post">
        % csrf_token %
        <div class="form-group form-group-lg">
            <div class="input-group input-group-lg col-12">
                <select id="id_select2" class="form-control selectpicker" name="options[]"
                        multiple="multiple" data-live-search="true">
                    <option data-tokens="123" value="456">Test</option>
                </select>
            </div>
        </div>
    </form>
% endblock %
% block scripts %
    <script>
        $(document).ready(function () 
            $('#id_select2').select2();
        );
    </script>
% endblock %

我知道这个问题是因为有两个函数名称和参数完全相同。

【问题讨论】:

在 html 中创建 我真的毕业了!我会把它放在一个答案中,你可以将它标记为解决答案:D 【参考方案1】:

我建议您将 select2(脚本)的导入放在 html 正文中,就在您自己的脚本标记之前

:D

【讨论】:

以上是关于如何强制 Django 使用 CDN 中的 select2 而不是本地管理员版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 Django 模型中的 2 个字段共享相同的默认值?

Django用户模型电子邮件字段:如何使其成为强制性

如何在 Django settings.py 中为 CDN 设置 STATIC_URL

django设置中的功能?

如何强制 Django 使用服务名称连接到 Oracle

如何使用 django 和 aws s3 在点击时强制下载图像