【发布时间】:2015-12-15 23:22:37
【问题描述】:
我正在尝试学习如何在 Django 中上传文件并在模板中使用它们。 我的目标是创建带有 multiuplad 字段的帖子表单,但我从简单的事情开始。我试图升级单个文件并在模板中添加指向这些文件的链接。这就是我到目前为止所做的:
型号:
class Adds(models.Model):
author = models.ForeignKey(User, verbose_name=u"Autor postu", blank=True, null=True)
image = models.FileField(upload_to='photos/')
def get_absolute_url(self):
return settings.MEDIA_ROOT+"\%s" % self.image.name
我添加了函数 get_absolute_url 来获取添加了 MEDIA_ROOT 的 url。它不起作用,因为 MEDIA_ROOT 路径部分带有“\”,而 res 用“/”分隔。那是第一个问题如何使此功能正常工作。
我正在添加这样的链接<a href="{{plik.get_absolute_url}}">{{plik.get_absolute_url}}</a>
但我读到了 url 函数,所以我尝试了类似 <a href="{{plik.image.url}}">{{plik.image.url}}</a>但它返回的 url 没有 MEDIA_ROOT 部分,所以只有“upladed_to_name/file_name”。
设置中的我的 MEDIA_ROOT:
MEDIA_ROOT= os.path.join(os.path.dirname(BASE_DIR), "static_env", "my_static", "media")
在 shell 中我有这样的东西:
In [1]: from voiceManaging.models import Pracownik
In [2]: i=Pracownik.objects.get(pk=1)
In [3]: i.zdjecie.url
Out[3]: 'photos/mama_0SADn31.jpg'
In [4]: i.zdjecie.path
Out[4]: u'E:\\Django\\Projects\\KCKAPP\\static_env\\media\\photos\\mama_0SADn31.
jpg'
【问题讨论】:
-
你能添加你定义的
MEDIA_ROOT吗? -
您使用的是什么媒体存储类?如果您不确定,请在您的设置中输入
DEFAULT_FILE_STORAGE。 -
我的设置中没有这个静态。所以我的 DEFAULT_FILE_STORAGE 应该和 MEDIA_ROOT 一样?
标签: python django templates upload