上传时的django自定义图像名称
django cutom image name on upload
我需要用 django 创建一个图片上传,问题是,django 总是保存在一个全局项目(称为 linkdump)文件夹中,我想将它保存在项目文件夹(linktracker)中。
setting.py:
STATIC_URL = '/static/'
型号:
class Link(models.Model):
link_description = models.CharField(max_length=200)
link_url = models.CharField(max_length=200)
link_image = models.ImageField(upload_to= './static/')
def __str__(self):
return self.link_description
class Admin:
pass
现在在视图中:
<img src="{% static link.link_image %}" alt="{{ link.link_description }}">
它returns
http://127.0.0.1:8000/static/static/o-BLUE-LIGHT-SLEEP-facebook.jpg
并且上传在项目文件夹(linkdump)中,而不是在应用程序中。
您可以指定函数 return ImageField 的自定义路径:
def get_upload_path(instance, filename):
return 'your/custom/path/here'
class Link(models.Model):
. . .
link_image = models.ImageField(upload_to=get_upload_path)
现在您可以使用模型实例中的信息来建立要上传到的路径。
此外,您不想使用 {% static %} 模板标签来指定图像的路径。您只需使用字段的 .url
属性:
<img src="{{ link.link_image.url }}" alt="{{ link.link_description }}" />
我需要用 django 创建一个图片上传,问题是,django 总是保存在一个全局项目(称为 linkdump)文件夹中,我想将它保存在项目文件夹(linktracker)中。
setting.py:
STATIC_URL = '/static/'
型号:
class Link(models.Model):
link_description = models.CharField(max_length=200)
link_url = models.CharField(max_length=200)
link_image = models.ImageField(upload_to= './static/')
def __str__(self):
return self.link_description
class Admin:
pass
现在在视图中:
<img src="{% static link.link_image %}" alt="{{ link.link_description }}">
它returns
http://127.0.0.1:8000/static/static/o-BLUE-LIGHT-SLEEP-facebook.jpg
并且上传在项目文件夹(linkdump)中,而不是在应用程序中。
您可以指定函数 return ImageField 的自定义路径:
def get_upload_path(instance, filename):
return 'your/custom/path/here'
class Link(models.Model):
. . .
link_image = models.ImageField(upload_to=get_upload_path)
现在您可以使用模型实例中的信息来建立要上传到的路径。
此外,您不想使用 {% static %} 模板标签来指定图像的路径。您只需使用字段的 .url
属性:
<img src="{{ link.link_image.url }}" alt="{{ link.link_description }}" />