Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何制作;“复制到剪贴板”;所选字段的django admin中的按钮/链接?_Python_Django_Django Admin - Fatal编程技术网

Python 如何制作;“复制到剪贴板”;所选字段的django admin中的按钮/链接?

Python 如何制作;“复制到剪贴板”;所选字段的django admin中的按钮/链接?,python,django,django-admin,Python,Django,Django Admin,我使用经典的Django管理面板。我想为模型中的字段添加按钮/链接 最简单的方法是什么 让我向您展示如何使用Javascript在Django admin中的字段旁边显示按钮 首先,您需要知道该字段的HTML元素id。要知道某个用户的id Chrom/Firefox中的元素:右键单击输入字段>检查元素 假设我的模型中有一个名为name的字段, Django管理界面分配的HTML元素id,将是id\u name 因此,如果我想在旁边显示一个按钮,我会编写以下JS脚本: var $ = django

我使用经典的Django管理面板。我想为模型中的字段添加按钮/链接


最简单的方法是什么

让我向您展示如何使用Javascript在Django admin中的字段旁边显示按钮

首先,您需要知道该字段的HTML元素
id
。要知道某个用户的
id
Chrom/Firefox中的元素:右键单击输入字段>检查元素

假设我的模型中有一个名为
name
的字段, Django管理界面分配的HTML元素
id
,将是
id\u name

因此,如果我想在旁边显示一个按钮,我会编写以下JS脚本:

var $ = django.jQuery;

$(document).ready(function() {
    var myButton = '<button>Copy</button>';
    $(myButton).insertAfter($('#id_name'));
});
如果打开模型的“添加/更改管理”页面,您将在下一步看到一个按钮 到所需的字段。虽然,按钮可能看起来有点难看,但我相信你可以通过一些CSS魔法使它变得漂亮

希望这个答案能让你开始。在此之后,您可以为实际的“复制到剪贴板”功能编写JS代码,并将代码传递给Django管理员,就像我在上面向您展示的那样


注意:此答案不显示如何将文本复制到剪贴板。它只向您展示了如何使用JS在Django admin中的字段旁边显示按钮。

今天我偶然发现了这个问题。但是,我没有包括静态文件(这可能会导致其他问题,例如,有两个不同的目标),而是考虑了一种方法字段样式,并得出以下结论:

from django.utils.safestring import mark_safe


class AttachmentAdmin(admin.ModelAdmin):

    .
    .

    readonly_fields = (
        'options',
    )

    def options(self, obj):
        btn_id = 'copy-helper'
        return mark_safe(f"""
            <input text="text" id="{btn_id}" value="{obj.media_url}" style="position: absolute; top: -10000px">
            <a href="#" onclick="document.querySelector(\'#{btn_id}\').select(); document.execCommand(\'copy\');" class="addlink">Copy media url to clipboard</a>
            """
        )
    options.short_description = _('Options')
来自django.utils.safestring导入标记\u safe
类AttachmentAdmin(admin.ModelAdmin):
.
.
只读_字段=(
“选项”,
)
def选项(自身、obj):
btn_id='复制帮助程序'
返回标记“安全(f)”
"""
)
options.short_description=u('options'))
这导致:

通过这种方式可以轻松定制外观,如果需要,可以首先通过queryselector扩展javascript以从其他html标记获取输入(type=“text”)字段值


希望这对其他人有用。

据我所知,你不能。我所知道的在网站上执行“复制到剪贴板”按钮的最简单方法是使用Adobe Flashcheck,如果这有什么帮助的话
from django.utils.safestring import mark_safe


class AttachmentAdmin(admin.ModelAdmin):

    .
    .

    readonly_fields = (
        'options',
    )

    def options(self, obj):
        btn_id = 'copy-helper'
        return mark_safe(f"""
            <input text="text" id="{btn_id}" value="{obj.media_url}" style="position: absolute; top: -10000px">
            <a href="#" onclick="document.querySelector(\'#{btn_id}\').select(); document.execCommand(\'copy\');" class="addlink">Copy media url to clipboard</a>
            """
        )
    options.short_description = _('Options')