django S3 - 修剪图像字段文件名但不修剪 url 路径

2024-04-09

这是我的问题的后续:ImageField / FileField Django 表单当前无法修剪文件名的路径 https://stackoverflow.com/questions/47887158/imagefield-filefield-django-form-currently-unable-to-trim-the-path-to-filename

在我的 Django 应用程序中,有一个图像字段上传到 S3 修剪图像文件路径名后,由于 url 被修剪,因此无法访问图像。如何修剪显示但不修剪路径?

我设法修剪显示文件名的显示,如下所示

class CustomClearableFileInput(ClearableFileInput):

    def get_context(self, name, value, attrs):
        logging.debug("%s",name)
        logging.debug("%s",value)
        value.name = path.basename(value.name)
        context = super().get_context(name, value, attrs)       
        return context

    class CompanySettingEdit(forms.ModelForm):
       company_logo = forms.ImageField(widget=CustomClearableFileInput)

这是输出:

https://imgur.com/a/M42Mz <-- display correct
https://bucketname.s3.amazonaws.com/media/certiport_logo.png <-- invalid url

如果我不修剪它:

class CustomClearableFileInput(ClearableFileInput):

    def get_context(self, name, value, attrs):
        logging.debug("%s",name)
        logging.debug("%s",value)
        # value.name = path.basename(value.name) <-- remove this
        context = super().get_context(name, value, attrs)       
        return context

    class CompanySettingEdit(forms.ModelForm):
       company_logo = forms.ImageField(widget=CustomClearableFileInput)

这是输出:

https://imgur.com/a/rGi8f <-- display incorrect
https://bucketname.s3.amazonaws.com/media/company_logo/15/certiport_logo.png <--valid url

我的目标是:

display: certiport_logo.png
url: https://bucketname.s3.amazonaws.com/media/company_logo/15/certiport_logo.png

我怎样才能做到这一点?


The urlFileField/ImageField 的属性是动态的:它取决于name属性就像str()在被调用时执行。相反,让我们写一些除此之外的东西name并更改模板以使用它:

class CustomClearableFileInput(ClearableFileInput):
    template_name = 'path/to/clearable_file_input.html'
    # less confusing place than get_context...
    def format_value(self, value):
        if self.is_initial(value):
            value.basename = path.basename(value.name)
            return value

对于模板(从 django 源代码修改并漂亮打印)

{% if widget.is_initial %}
    {{ widget.initial_text }}: 
    <a href="{{ widget.value.url }}">
        {{ widget.value.basename }} {# <== CHANGE #}
    </a>
    {% if not widget.required %}
        <input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}" />
        <label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label>
    {% endif %}
    <br /> {{ widget.input_text }}:
{% endif %}
<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %} />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django S3 - 修剪图像字段文件名但不修剪 url 路径 的相关文章

随机推荐

  • 当 AudioSessionActive 为 NO 时,无法通过硬件按钮控制 AVAudioPlayer 的音量

    我正在构建一个路线导航应用程序 可以播放周期性的简短声音片段 无论屏幕是否锁定 声音都应该播放 应该与其他音乐播放混合 并且应该在播放此音频时使其他音乐闪避 Apple 在 29 20 分钟的 WWDC 2010 session 412 i
  • WPF ComboBox DropDown 部分出现在错误的位置

    我在 XAML 窗口上放置了几个 ComboBox 当我展开其中任何一个时 下拉部分会出现在屏幕的左上角 我使用 Visual Studio 2008 C Express 我不记得当我使用Visual Studio 2008 试用版 时有这
  • 如何对密码进行哈希处理

    我想在手机上存储密码的哈希值 但我不知道该怎么做 我似乎只能找到加密方法 应该如何正确地对密码进行哈希处理 考虑到今天 2012 年 的最佳实践 这里的大多数其他答案都有些过时了 NET 中原生可用的最强大的密码哈希算法是 PBKDF2 由
  • 带空间的自动完成文本视图

    我有一个 Room 数据库并创建了一个模型和 viewModel 我想知道如何使自动完成文本视图与数据库数据和视图模型一起工作 以在用户输入时过滤客户列表 视图模型 class CustomerVM ViewModel private va
  • R Notebook HTML 格式 - 添加到分页表的超链接

    我希望从 R Notebook 编写一个 html 文件 其中包含带有超链接的分页表 可以使用插入超链接knitr kable 但我找不到生成的方法paged 由于我的问题似乎没有完美的解决方案 我想我应该发布我想出的解决方法 以防有人遇到
  • 代理服务器截断视图状态

    有什么方法可以模拟代理服务器截断视图状态吗 我通过将 ViewState 放在服务器端来完全避免使用 ViewState 客户端 该代码大约有 5 行长 我已经看到性能的巨大改进 http aspadvice com blogs rober
  • IE8 不显示图像(红色 x)...有时

    我对以下问题感到抓狂 这在任何其他浏览器 Chrome Firefox 上都不会发生 IE8缓存被清除 浏览器启动时会打开 HTML Javascript 页面 该页面会动态请求并创建一些图像 此 HTML 页面由 Tomcat 服务器 l
  • 下载管理器在 Android Pie 9.0 NetworkSecurityConfig 中不起作用:未指定网络安全配置,使用平台默认值

    将设备操作系统更新为Android 9 0 以前这段代码工作正常 小米A2 现在 文件没有被下载Android Pie 9 0 此外 它在奥利奥 牛轧糖 棉花糖中运行良好 这是代码片段 File myDir new File Environ
  • 使用 awk 将稀疏矩阵转换为 ARFF

    我正在处理稀疏矩阵格式的极大数据集 数据具有归档格式 3 个制表符分隔的列 其中第一列中的字符串对应于行 第二列中的字符串对应于属性 第三列中的值是加权分数 church place 3 church institution 6 man p
  • 为什么没有显示 Google Analytics(分析)内容实验的结果?

    首先 让我快速为您介绍一下我的设置 我们有多个域 因此我使用跟踪代码 将流量同时发送到 2 个不同的配置文件 一个配置文件跟踪该特定域 另一个是多域配置文件 它从以下位置收集数据 all域 这就是我的域上的页面的跟踪代码的样子 UA XXX
  • MySQL列中的随机数[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在尝试在名为 likes 的数据库列之一中添加随机数 其中大约有 5000 行 目前我已经尝试像下面这样获得从 10
  • 我可以使用 PDO 参数化语句创建 MYSQL 表吗?

    我希望使用 PHP 和 PDO 创建一个 MySQL 表 我还希望参数化表名 我已经尝试实现这一点 并且有错误的代码如下所示 class databaseaccess public hostname localhost public use
  • 如何在C#中获得一组枚举值?

    假设我有一个枚举 http msdn microsoft com en us library system windows forms dialogresult aspx namespace System Windows Forms pub
  • 从 Firebase 检索的自定义对象始终具有 Null 属性

    我正在尝试检索自定义User来自 Firebase 的对象如下 getUserFromDB loggedInUserEmail viewModel new ViewModelProvider this get UserViewModel c
  • 无法将 SelectedIndex 设置为 0

    当尝试将 ComboBox SelectedIndex 设置为 0 以便我将第一个值作为默认值时 不起作用 组合框默认为空 如果我尝试将其设置为任何其他有效的数字 我会将所选索引作为默认值 有人知道为什么我不能从 xaml 将其设置为 0
  • 从 Ansible 中的自定义模块访问 playbook 变量[重复]

    这个问题在这里已经有答案了 我正在 Ansible 中编写一个特定于 Playbook 的自定义模块 是否可以直接访问剧本变量 而不需要将其作为参数传递给任务 这是不可能的 因为模块是远程执行的 除非显式传递 否则所有变量都不可用 我有同样
  • 从 X 和 Y 坐标获取纬度和经度

    看起来从经度和纬度到X和Y坐标的转换有丰富的知识 但反过来却没有 这是我根据 Kavrayskiy 的数学计算得出的函数 float xp kavraX radians pv x radians pv y FACTOR float yp k
  • 用字典重新映射 pandas 列中的值,保留 NaN

    我有一本字典 如下所示 di 1 A 2 B 我想将其应用到col1数据框的列类似于 col1 col2 0 w a 1 1 2 2 2 NaN to get col1 col2 0 w a 1 A 2 2 B NaN 我怎样才能最好地做到
  • C# 编组回调

    我正在尝试对结构中的 c 回调进行编组 我很确定我的一切都是正确的 但是当使用我的 C 示例时 我没有收到事件 而当使用 C 时 我确实收到了事件 这是 C class Program DllImport Some dll CharSet
  • django S3 - 修剪图像字段文件名但不修剪 url 路径

    这是我的问题的后续 ImageField FileField Django 表单当前无法修剪文件名的路径 https stackoverflow com questions 47887158 imagefield filefield dja