【发布时间】:2018-02-05 22:55:51
【问题描述】:
我想用 Django 显示一张图片,该图片已经保存在 mysql 数据库中。在所有方法中,我发现有人使用models.Imagefield(upload_to='path'),但我认为这会将文件保存到此目录中,其他计算机的人以后将无法访问。
那么问题来了,如何直接访问数据库并显示图片而不在中间保存呢?
我已经设法在 python 中做到这一点,但我不太确定如何将代码实现到 models.py 中。
我的方法是这样的:
class mysqlpicture(models.Model):
#mysqlpic=something?
def openpic():
connection = pymysql.connect(user='root', passwd='***',
host='localhost',
database='db')
cursor = connection.cursor()
sql1='select * from Pictures'
cursor.execute(sql1)
data=cursor.fetchall()
mysqlpic=io.BytesIO(data[1][0])#one means second element of column zero
#img=Image.open(mysqlpic)
#img.show()
cursor.close()
return mysqlpic
然后我尝试在views.py 中将mysqlpic直接提供给httpresponse,如下所示:
def MysqlView(request):
query_results = mysqlpicture.objects.all()
template = loader.get_template('polls/pic.html')
context = {
'query_results': query_results,
}
return HttpResponse(template.render(context, request))
使用模板pic.html插入图片如下:
{% for n in query_results %}
<mysqlpic src="{{ n.mysqlpic.url }}" />
{% endfor %}
有人知道如何以正确的方式做到这一点吗?
【问题讨论】:
标签: python mysql django django-models