玩蛇网提供最新Python编程技术信息以及Python资源下载!

Django网站七牛上传图片遇到出错信息如何捕获

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

import base64
import json
def 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中上传图片的代码吗? 弄了好久,图片都还上传不了。

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19508.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月24日 - 20时23分44秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules