Pyuploadcare ImageField 上传选项在用户编辑 html 页面上不可见



我已经在我的django应用程序中集成了Pyuploadcare模块。我在应用程序的 models.py 中添加了一个图像字段,如下所示。封面字段的图像上传不会显示在单个用户访问的编辑页面中。

其中,pyuploadcare API集成在django的管理控制台中运行良好。

from pyuploadcare.dj.models import ImageField
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, 
on_delete=models.CASCADE)
date_of_birth = models.DateField(blank=False, null=True)
img = models.ImageField(upload_to=upload_to, blank=True, db_index=True)
slug = models.SlugField(max_length=200, blank=True)
cover = ImageField(blank=True, manual_crop="") 

User_edit页面如下所示:

<pre>
{% block content %}
<div class="edit-form">
<h1>Edit your account</h1>
<p>You can edit your account using the following form:</p>
<form action="." method="post" enctype="multipart/form-data" id="controlForm">
{{ user_form.as_p }}
{% csrf_token %}
{{ profile_form.as_p}}
<p><input type="submit" value="Save changes"></p>
</form>
</div>
{% endblock %}
</pre>

我尝试更新从下面显示 forms.py 生成的表单


class ProfileEditForm(forms.ModelForm):
cover = ImageField(label='')
class Meta:
model = Profile
fields = ('date_of_birth', 'img', 'cover')
widgets = {
'date_of_birth': DateInput(),
}   

表单生成隐藏类型的封面

预期结果为

<tr><th></th><td><input type="file" name="cover" value="https://ucarecdn.com/182065fa-d558-47e5-beb6-0d0c3dd8baf2/" role="uploadcare-uploader" data-public-key="bce890ec49219565dc75" data-integration="Django/2.1.7; PyUploadcare-Django/2.6.0" data-images-only="" re
quired id="id_cover"></td></tr>

实际结果是在页面呈现期间从 views.py 捕获

实际结果为:

<tr><th></th><td><input type="hidden" name="cover" value="https://ucarecdn.com/182065fa-d558-47e5-beb6-0d0c3dd8baf2/" role="uploadcare-uploader" data-public-key="bce890ec49219565dc75" data-integration="Django/2.1.7; PyUploadcare-Django/2.6.0" data-images-only="" re
quired id="id_cover"></td></tr>

结果是从配置文件表单 i 生成的 views.py 捕获

的下面提供了 Github 链接以供参考,受影响的应用程序名称是帐户。 https://github.com/bikirandas/OmexOnline

在以下链接中也为 GIthub 创建了相同的问题 https://github.com/bikirandas/OmexOnline/issues/5

如果您使用的实际捕获字符串,则呈现的 HTML 中的实际结果确实是预期的结果pyuploadcare.dj.models.ImageField其中包含从用户上传的文件的 CDN URL。

最有可能的是,您忘记将javascript库加载到您的页面。只需将其添加到您的模板中:

<script>
UPLOADCARE_PUBLIC_KEY = '*your key*';
</script>
<script src="https://ucarecdn.com/libs/widget/3.x/uploadcare.full.min.js"></script>

它将与管理页面上的工作方式相同。在管理页面上,这些媒体会自动加载。

最新更新