Hi How about one view that takes arguments as either POST or GET params?
> You have to bear with me but where does background come from? So I can > use the save() method from the PIL library is that right? Ok so you can load a canvas. Just to illustrate here is a view that puts dots on a map *map is the canvas. specifically: try: background = Image.open(image_path) canvas = ImageDraw.Draw(background) except IOError: return HttpResponse(status=500) Below is the full view... I think this is what you want. Hope its makes things clearer. def drawAllEvents(request, **kwargs): import Image, ImageDraw from datetime import datetime image_path = getattr(settings,'HOME_DIR')+'templates/images/front.gif' try: background = Image.open(image_path) canvas = ImageDraw.Draw(background) except IOError: return HttpResponse(status=500) if background.mode is not 'P': return HttpResponse(status=500) aa = Airfield.objects.filter(locality__event__dates__start__gte=datetime.now()).values('airfield_lat_dec','airfield_long_dec') ll = Location.objects.filter(locality__event__dates__start__gte=datetime.now()).values('location_lat_dec','location_long_dec') #--------------------------------------------------------------------- def renderdot(latlon): #scaling relative to aeroclub map (204, 165) in pixels scale = float(Decimal(10)/Decimal(49)) mx = 120 - 36*scale my = (-25 - (background.size[1] - 71)*scale) xcoord1 = round((latlon[1] - mx)/scale); ycoord1 = background.size[1] - round((latlon[0] - my)/scale); #bounding box of the ellipse xcoord2=xcoord1+5 ycoord2=ycoord1+5 canvas.ellipse([(xcoord1,ycoord1),(xcoord2, ycoord2)], fill=0) #--------------------------------------------------------------------- for e in aa: renderdot( (float(e['airfield_lat_dec']), float(e['airfield_long_dec'])) ) for e in ll: renderdot( (float(e['location_lat_dec']), float(e['location_long_dec'])) ) response = HttpResponse(status=200, mimetype="image/gif") background.save(response, "GIF") return response On Tue, Apr 12, 2011 at 2:33 PM, nai <chng.nai...@gmail.com> wrote: > You have to bear with me but where does background come from? So I can > use the save() method from the PIL library is that right? > > And I can do something like this: > > return render_to_response('template.html', {'graph':response}) > > Where graph is just a variable in my django template (and not <img > src="{{ graph }}" />) > > Is that right? > > On Apr 12, 12:03 pm, Sam Walters <mr.sam...@gmail.com> wrote: >> Use python imaging:http://www.pythonware.com/products/pil/ >> >> You can return a response with an image of the graph. >> >> response = HttpResponse(status=200, mimetype="image/gif") >> background.save(response, "GIF") >> return response >> >> There is no 'best practice for this' Some people i know use flash. >> However dynamically generated images is good eg: no browser pluggins >> >> cheers >> >> sam_w >> >> >> >> >> >> >> >> On Tue, Apr 12, 2011 at 1:29 PM, nai <chng.nai...@gmail.com> wrote: >> >> > I will try to the 2 views method and see how I get on but in it would >> > be great if you could answer my questions too! >> >> > Why does it go against best practices? >> >> > How would one go about doing it anyway? >> >> > On Apr 11, 6:39 pm, Xavier Ordoquy <xordo...@linovia.com> wrote: >> >> Le 11 avr. 2011 à 12:21, nai a écrit : >> >> >> > This is the give example from Matplotlib for Django: >> >> >> > def simple(request): >> >> > import random >> >> >> > from matplotlib.backends.backend_agg import FigureCanvasAgg as >> >> > FigureCanvas >> >> > from matplotlib.figure import Figure >> >> > from matplotlib.dates import DateFormatter >> >> >> > fig=Figure() >> >> > ax=fig.add_subplot(111) >> >> > x=[] >> >> > y=[] >> >> > now=datetime.datetime.now() >> >> > delta=datetime.timedelta(days=1) >> >> > for i in range(10): >> >> > x.append(now) >> >> > now+=delta >> >> > y.append(random.randint(0, 1000)) >> >> > ax.plot_date(x, y, '-') >> >> > ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d')) >> >> > fig.autofmt_xdate() >> >> > canvas=FigureCanvas(fig) >> >> > response=django.http.HttpResponse(content_type='image/png') >> >> > canvas.print_png(response) >> >> > return response >> >> >> > Is there anyway I can return the image like this `return >> >> > render_to_response('template.html', {'graph': <graph generated by >> >> > matplotlib or some other graphing package>}` >> >> >> Hi, >> >> >> Is there any reasons why you couldn't have a view that would just render >> >> the image and the other one that would have a img tag pointing to the >> >> first view ? >> >> It is possible to embed an image in the web page, but I'm sure it goes >> >> against the best practices. >> >> >> Regards, >> >> Xavier. >> >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "Django users" group. >> > To post to this group, send email to django-users@googlegroups.com. >> > To unsubscribe from this group, send email to >> > django-users+unsubscr...@googlegroups.com. >> > For more options, visit this group >> > athttp://groups.google.com/group/django-users?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-users@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.