Python 如何在django中获取上传(生成)的文件名

Python 如何在django中获取上传(生成)的文件名,python,django,Python,Django,型号.py class client_users(AbstractBaseUser): first_name = models.CharField(max_length=150) last_name = models.CharField(max_length=150) email = models.EmailField(_('email address'), unique=True) password = models.CharField(max_length=1

型号.py

class client_users(AbstractBaseUser):
    first_name = models.CharField(max_length=150)
    last_name = models.CharField(max_length=150)
    email = models.EmailField(_('email address'), unique=True)
    password = models.CharField(max_length=150)
    birthday = models.DateField()
    phone = models.CharField(max_length=15)
    profile_image = models.ImageField(
        upload_to='images/', default="noimage.png")
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = CustomUserManager()

    def __str__(self):
        return self.email
def profile(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            try:
                form.save()
            except:
                pass
            print(client_users.profile_image.field.pre_save)
            return HttpResponseRedirect('/profile')
    else:
        form = UploadFileForm()
    return render(request, 'profile.html', {'form': form})
视图.py

class client_users(AbstractBaseUser):
    first_name = models.CharField(max_length=150)
    last_name = models.CharField(max_length=150)
    email = models.EmailField(_('email address'), unique=True)
    password = models.CharField(max_length=150)
    birthday = models.DateField()
    phone = models.CharField(max_length=15)
    profile_image = models.ImageField(
        upload_to='images/', default="noimage.png")
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = CustomUserManager()

    def __str__(self):
        return self.email
def profile(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            try:
                form.save()
            except:
                pass
            print(client_users.profile_image.field.pre_save)
            return HttpResponseRedirect('/profile')
    else:
        form = UploadFileForm()
    return render(request, 'profile.html', {'form': form})

由于django在图片名称后生成代码,因此我希望在上传后获得完整的文件名,以便更新数据库,request.FILES['profile_image']不会返回生成的值,而是返回上传时的文件名


有什么帮助吗?

您可以尝试访问
客户端用户.profile\u image.path

您是否在
URL.py
中设置了静态URL?如果不是,那就先试试。您无法访问该字段,除非在访问
instance=form.save()
之后,instance将释放
客户端用户.profile\u image.path
,在这种情况下,您甚至没有定义
客户端用户

如果需要,可以删除“尝试并例外”

instance = form.save()
然后用

print(instance.profile_image.path)

这就是我得到的
AttributeError:'ImageFileDescriptor'对象没有属性“path”
是的,它确实返回文件的路径,但是当存在重复时,例如当两个相同的用户导入了一个同名文件时,django会自动重命名第二个文件,并以一个随机字符串表达式结束,如,(image_VdsPdsM.jpeg)这就是我想要的,上传后由django重命名的文件名