0

我有这个领域的模型:

image=models.ImageField(upload_to='company-category')

company-category是文件夹中的一个文件uploads夹,但我想将图像上传到模板目录。我认为这种方式访问​​我网站的用户无法访问图像并下载它们。

在设置中:

TEMPLATE_DIRS = (
    "C:/ghoghnous/HubHub/Theme"
)

我怎样才能做到这一点?

4

3 回答 3

1

这里我给出两个解决方案。你问的那个,然后是我的建议。

使用以下代码将上传位置设置为您的模板文件夹。

from django.conf import settings

image=models.ImageField(upload_to = settings.TEMPLATE_DIRS[0])

上面的代码会将图像上传到您的模板目录。

我的建议:

将图像上传到您的媒体文件夹。然后使用MEDIA_URL允许用户下载它们。使用以下代码定义它们。

设置.py

MEDIA_ROOT = 'C:/ghoghnous/HubHub/media'
MEDIA_URL  = 'site_media'

网址.py

from django.conf import settings
urlpatterns += patterns('',
    url(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
)

模型.py

class SampleModel(models.Model):
    image = models.ImageField(upload_to = 'images')

如果您使用它,图像将被上传到文件夹C:/ghoghnous/HubHub/media/images/。然后使用objects.get或获取所需的图像objects.filter

record = SampleModel.objects.get(id = 1)

如果我print record.image,输出将是images/filename.jpg。将此传递给您的模板。然后您可以显示图像或提供下载链接,如下所示:

<a href="{{ record.image.url }}/" >Download</a>        #Download link
<img src="{{ record.image.url }}/" />                  #To display image
<a href="/site_media/images/file.jpg" >Download</a>    #Download static files

我建议您使用第二种方法,因为不建议将图像保存在模板文件夹中。

于 2012-09-12T12:20:06.590 回答
0

根据 Django 的良好实践,模板目录不是存储媒体的首选位置。

此外,您在网页上显示的任何图像都将具有路径并且可以下载。有些人使用脚本来停止右键单击和类似的东西,但据我了解源代码总是给你图像路径。

于 2012-09-12T12:05:02.853 回答
0

哦,我想你想把文件上传到一个临时文件夹,然后用它做点什么。正确的?

您需要覆盖clean_image. 然后您可以使用文件存储forms使用您想要的任何路径编写自己的代码

于 2012-09-12T12:38:02.167 回答