将图像上传到模板目录

时间:2012-09-12 10:28:37

标签: django

我有一个这个领域的模型:

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

company-categoryuploads文件夹中的文件夹,但我想将图片上传到模板目录。我想这样访问我网站的用户无法访问图片并下载它们。

设置中的

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

我该怎么做?

3 个答案:

答案 0 :(得分:1)

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

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

from django.conf import settings

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

以上代码会将图片上传到您的模板目录。

我的建议:

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

<强> settings.py

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

<强> urls.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}),
)

<强> models.py

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

如果您使用此功能,图像将上传到文件夹C:/ghoghnous/HubHub/media/images/。然后使用objects.getobjects.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

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

答案 1 :(得分:0)

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

此外,您在网页上显示的任何图像都将具有路径并可以下载。有些人使用脚本来阻止正确的点击和类似的东西,但据我所知,源代码总是给你图像路径。

答案 2 :(得分:0)

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

您需要覆盖clean_image中的方法forms。然后,您可以使用File storage

以任何路径编写自己的代码