0

我在 django 管理面板中上传的所有文件都存储在 FTP 服务器中,没有文件存储在本地。

文件上传后更改页面的外观示例

我想知道如何更改那个带圆圈的href,这样当我点击它时,路径对应于ftp路径+上传文件的名称。

所以它目前链接到“http://127.0.0.1:8000/admin/basic_app/software/6/change/profile_pics/file_name”,但它应该链接到类似“ftp://:@:/folder/file_name”的东西",这样当它被点击时,它会在 FTP 服务器上打开文件。

这可以通过在某处更改 url 路径来解决,还是我必须对这些页面进行模板覆盖?

4

1 回答 1

0

我认为您可以在 admin.py 中覆盖 AdminFileWidget (来源:Django。通过 ModelAdmin 覆盖更改页面中 FileField 字段的 html 格式

试试这个 :

from django.utils.safestring import mark_safe

class AdminMediaWidget(AdminFileWidget):
    def render(self, name, value, attrs=None,renderer=None):
        output = []
        if value and getattr(value, "url", None):
            image_url = value.url
            output.append('Real ftp link : <a href="ftp://myftp/{0}">{1}</a>'.format(image_url, image_url))

        output.append(super(AdminFileWidget, self).render(name, value, attrs))
        return mark_safe(''.join(output))


class FileAdmin(admin.ModelAdmin):
    formfield_overrides = {
        FileField: {'widget': AdminMediaWidget},
    }


admin.site.register(MyModelFile,FileAdmin)
于 2020-08-19T12:32:15.250 回答