Python 如何在django中获取上传(生成)的文件名
型号.pyPython 如何在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
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重命名的文件名