Django网站七牛上传图片遇到出错信息如何捕获,,是这样的,我的 Djan


是这样的,我的 Django 网站上的用户需要直接传图片到七牛,
上传图片我已经处理好了,关键是上传的后续过程。
我把那个用户上传图片后重定向的 returnUrl = "http://localhost:8000/returnpage" 的view函数这么写:

import base64import jsondef return_page(request):    domain = "ddkanhuo.qiniudn.com" #这是我的七牛空间地址    ret = request.GET['upload_ret']  # 读取返回的upload_ret    fileinfo = json.loads(base64.decodestring(ret))    if fileinfo.get('error'):        error_message = fileinfo['error']        return render(request, 'return_page.html', {'error_message': error_message})    else:        key = fileinfo['key']        public_url = 'http://'+ domain + '/' + key        return render(request, 'return_page.html', {'public_url': public_url})

然后return_page.html大概是这样的(如果上传发生错误就显示错误消息,上传成功则显示图片):

<html>.....{% if error_message %}        {{ error_message }}{% else %}        <p><img src="{{ public_url }}">{% endif %}.....</html>

但是问题是呢,如果图片上传成功了,确实会按照预想的那样显示图片;
但是如果上传图片失败了,并不会显示错误消息,而会发生错误:
MultiValueDictKeyError at /returnpage/ "'upload_ret'"

这个应该怎么办,错误出在哪里的?
Django 新人求教,七牛的文档真是太难懂了...

今天我也遇到这个问题了,这么久了不知道你解决了没。图片上传出错后直接就没有upload_ret这个returnBody了,错误信息直接在url里显示出来了。

我也是使用的django,我觉得我的项目没有必要主动上传到七牛,于是我使用了七牛的镜像功能,设置django的MEDIA_URL = 'http://xxxx.qiniudn.com/media/'。直接指向你的子域名,如(http://static.sample.com/)。镜像功能会主动去下载访问到的图片,不需要在程序里主动传到七牛,减少了很多上传失败的风险。缺点是有可能第一次访问该图片的时候速度稍慢,我觉得到是可以接受这个速度。
django项目里的图片如果做了修改,我的做法是在程序里向七牛提交删除key的指令,然后前台访问的时候加上版本参数,如:http://xxxx.qiniudn.com/media/123.jpg?v=123456,可以强制七牛刷新cdn缓存。缺点是好像刷新还是需要一点时间才能同步。

你好,能分享一下怎么在django中上传图片的代码吗? 弄了好久,图片都还上传不了。

编橙之家文章,

评论关闭