我有以下带有ImageField的django模型:
class Pics(models.Model):
def file_path(instance, filename):
return '/'.join([instance.user.username, 'pics', filename])
#...
file = models.ImageField(upload_to=file_path)
Run Code Online (Sandbox Code Playgroud)
我知道我可以调用pic.file.url来获取图像的URL.但是,我想知道Django是否也实现了一些自动托管该图像的功能?
我目前的代码工作正常,但似乎多余:
#urls.py
urlpatterns += patterns('views',
url(r'media/(?P<name>\w{1,30})/pics/(?P<file>[^\\/:*?\"<>|]+)$', 'show_pic'),)
Run Code Online (Sandbox Code Playgroud)
那么我的观点是:
#app.views
import mimetypes
def show_pic(request, name, file):
path = u'media/%s/graphics/%s' % (name, file)
mime = mimetypes.guess_type(name)[0]
image_data = open(path, 'rb').read()
return HttpResponse(image_data, mimetype=mime)
Run Code Online (Sandbox Code Playgroud)
您可以直接指向media/<name>/graphics/<file>并让您的网络服务器本身为图像提供服务,而不是创建一个视图来提供图片.Django不太适合提供静态文件,但另一方面,您的网络服务器旨在有效地处理它们.
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |