Django 302重定向实现动态图片显示

有时Django开发者可能会遇到这样的需求:用户访问同一个URL,根据具体的业务需求返回不同的图片。

例如:用户访问URL /user/avatar/时,根据Session中的用户ID返回该用户的头像。

一般来说,要实现此功能可以采用下列2种方法:

  1. 使用Python图片处理模块PIL/pillow动态生成图片后直接响应返回给浏览器
  2. 使用HTTP 302,临时重定向至指定的图片URL返回给浏览器

需要注意的是,虽然HTTP 301与HTTP 302都可以实现请求的重定向,但HTTP 301为Moved Permanently,意为永久转移,该响应会被Google Chrome和Firefox等浏览器所缓存,因此不适于实现图片的动态重定向。

因而在此只能选择HTTP 302 Found 告知浏览器该响应为临时重定向,避免浏览器对重定向的结果进行缓存。

下面的代码片段实现了从3张图片中通过HTTP 302重定向随机返回一张给浏览器的功能。

import random
from django.shortcuts import redirect
def dynamic_pic(request):
    url_list = ["http://bfsu.sinaapp.com/wp-content/themes/bfsu/i/homepix/home5.jpg", "http://bfsu.sinaapp.com/wp-content/themes/bfsu/i/homepix/home2.jpg", "http://http://bfsu.sinaapp.com/wp-content/themes/bfsu/i/homepix/home3.jpg"]
    return redirect(random.choice(url_list))

 

本文链接:http://bookshadow.com/weblog/2014/10/25/django-dynamic-redirect-image-url/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码