views.py: def calendar(request, calendar, year=False, month=False): try: c = Calendar.objects.get(ident=calendar) except: raise Http404 linklist = [ {"url": "/calendar", "text": "calendar"}, {"url": "/calendar/" + c.ident, "text": c.name.lower()}] if year == False: year = strftime("%Y") else: linklist.append({"url": "/calendar/"+c.ident+"/"+year, "text": year}) if month == False: month = strftime("%m") else: linklist.append({"url": "/calendar/"+c.ident+"/"+year+"/"+month, "text": month}) events = Event.objects.filter(time__year=int(year), time__month=int(month), calendar=c) cal = eventcalendar(events, year, month) print cal replaces = { "linklist": linklist, "calendar": c, "cal": cal, "year": year, "month": month, "events": events, "today": strftime("%e") } return rtr("calendar/calendar.html", replaces, request) def eventcalendar(events, year, month): grid = monthcalendar(int(year), int(month)) cal = [] for week in grid: new_week = [] for day in week: new_week.append({"number":day, "events":events.filter(time__day = day)}) cal.append(new_week) return cal calendar.html: {% block content %}

{{ calendar.name }}

{% if cal %}{% for week in cal %} {% for day in week %} {% ifnotequal day.number 0 %}
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
{% for event in day.events %} {% endfor %}
{{ day.number }}
{%endifnotequal%} {% endfor %} {% endfor %}{% endif %}
{% endblock %}