【问题标题】:Django Form Field Problems with Cloudinary's CloudinaryImage ClassCloudinary 的 CloudinaryImage 类的 Django 表单字段问题
【发布时间】:2012-09-03 22:41:17
【问题描述】:

我有一个Django 表单,它显示ClearableFileInput 对应CloudinaryImage(来自Cloudinary)。一切都很好,除了当我显示表单字段时,我在锚元素中得到一个损坏的 href:

Currently: <a href="&lt;bound method CloudinaryImage.url of &lt;cloudinary.CloudinaryImage object at 0x10b3f4ad0&gt;&gt;">&lt;cloudinary.CloudinaryImage object at 0x10b3f4ad0&gt;</a> <input type="checkbox" name="logo-clear" id="logo-clear_id" /> <label for="logo-clear_id">Clear</label><br />Change: <input id="id_logo" type="file" name="logo" class="span4" />

这是我正在使用的模板代码:

<div class="fieldWrapper">
    <label for="id_logo"><h3>{{ form.logo.label }}:</h3></label>
    {{ form.logo|add_class:"span4" }}
    <p>{{ form.logo.help_text }}</p>
</div>

add_class 部分来自django-widget-tweaks。我删除了 add_class 部分,输出没有变化。

这是我的表单定义:

class OrganizationFormTheme(forms.ModelForm):
    pass

    class Meta:
        fields = ('logo',)
        model = Organization

看起来 Django 在使用 CloudinaryImage 的 url 函数时遇到了问题。我怀疑它正在寻找一个简单的属性而不是一个函数。

关于如何处理这个问题有什么建议吗?我应该继承 CloudinaryImage 并以某种方式重写 url 函数吗?

【问题讨论】:

  • 你能显示你的表单定义吗?
  • 我决定在我的模板中手动构建表单小部件。如果我不必这样做就好了。
  • 我遇到了类似的错误。你引用的是方法,而不是它的输出。
  • 完全正确——只有 Django 的模板代码 {{ form.logo }} 引用了该方法,而不是它的输出。有办法改变吗?

标签: django django-forms django-widget cloudinary


【解决方案1】:

url 函数和url 属性之间确实存在冲突。 我们已将函数更改为 build_url 而不是 url

另外,在调用CloudinaryImage的构造函数时,可以指定转换参数为url_options参数。然后,您可以使用 url 属性获取完整的 Cloudinary URL。

最新版本的 Python 库中提供了该修复程序:http://pypi.python.org/pypi/cloudinary

【讨论】:

  • 我已经改变了我的实现,所以我不能检查这个解决方案——但听起来你做了一个改变来解决这个问题。感谢您的关注和优质服务。
猜你喜欢
  • 1970-01-01
  • 2012-06-06
  • 2012-11-27
  • 2021-09-05
  • 2021-09-26
  • 2019-03-10
  • 2011-05-28
  • 2021-06-10
  • 2015-01-13
相关资源
最近更新 更多