我有这个领域的模型:
image=models.ImageField(upload_to='company-category')
company-category
是文件夹中的一个文件uploads
夹,但我想将图像上传到模板目录。我认为这种方式访问我网站的用户无法访问图像并下载它们。
在设置中:
TEMPLATE_DIRS = (
"C:/ghoghnous/HubHub/Theme"
)
我怎样才能做到这一点?
我有这个领域的模型:
image=models.ImageField(upload_to='company-category')
company-category
是文件夹中的一个文件uploads
夹,但我想将图像上传到模板目录。我认为这种方式访问我网站的用户无法访问图像并下载它们。
在设置中:
TEMPLATE_DIRS = (
"C:/ghoghnous/HubHub/Theme"
)
我怎样才能做到这一点?
这里我给出两个解决方案。你问的那个,然后是我的建议。
使用以下代码将上传位置设置为您的模板文件夹。
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
我建议您使用第二种方法,因为不建议将图像保存在模板文件夹中。
根据 Django 的良好实践,模板目录不是存储媒体的首选位置。
此外,您在网页上显示的任何图像都将具有路径并且可以下载。有些人使用脚本来停止右键单击和类似的东西,但据我了解源代码总是给你图像路径。
哦,我想你想把文件上传到一个临时文件夹,然后用它做点什么。正确的?
您需要覆盖clean_image
. 然后您可以使用文件存储forms
使用您想要的任何路径编写自己的代码