0

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

在 django 的管理控制台中,pyuploadcare API 集成工作正常。

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>

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

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

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

4

1 回答 1

1

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

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

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

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

于 2019-03-29T10:40:50.970 回答