我需要用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 }}">
它返回
http://127.0.0.1:8000/static/static/o-BLUE-LIGHT-SLEEP-facebook.jpg
并且上传位于项目文件夹(linkdump)中,而不是在应用内。
答案 0 :(得分:1)
您可以指定一个函数来返回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 }}" />