【发布时间】:2020-01-04 14:37:03
【问题描述】:
我正在尝试在我的 Django 项目上配置 cloudinary。
当前配置会调整用户头像的大小并将其托管在云服务器上。
我想将 is avatar 的公钥与用户的 id 相关联,这样当用户希望更改他的头像时,旧的会被新的覆盖。
我还希望当用户删除他的帐户时,关联的头像要么删除云服务器
我不知道这种将公钥与用户标识符相关联的想法是否是一种好的做法,或者是否有其他方法可以做到这一点?
这是我目前天真地尝试做的事情:
forms.py
class ProfileUpdateForm(forms.ModelForm):
image = forms.ImageField(label='', required=True, widget=forms.FileInput)
class Meta:
model = Profile
fields = ['image']
views.py
@login_required
def account_edit(request):
p_form = ProfileUpdateForm(request.POST,
request.FILES,
instance=request.user.profile)
if request.method == "POST":
if p_form.is_valid():
p_form.save()
messages.success(request, _(f"Your image has been successfully uploaded!"))
return redirect('account_edit')
else:
messages.error(request, _(f"Image files only"))
return redirect('account_edit')
else:
p_form = ProfileUpdateForm(instance=request.user.profile)
models.py
from cloudinary.models import CloudinaryField
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = CloudinaryField("avatar",
folder = "avatar/",
public_id = request.user.pk, # NameError: name 'request' is not defined
notification_url = "https://dashboard.heroku.com/apps/register-start/avatar",
resource_type = "image",
transformation=[
{'width': 150, 'height': 150, 'gravity': "center", 'crop': "thumb"},
])
【问题讨论】:
标签: python django cloudinary