docs: def serveMonth(self, request, year=None, month=None):
          """Monthly calendar view."""
          myurl = self.get_url(request)
          def myUrl(urlYear, urlMonth):
              if 1900 <= urlYear <= 2099:
                  return myurl + self.reverse_subpage('serveMonth',
                                                      args=[urlYear, urlMonth])
          today = timezone.localdate()
          if year is None: year = today.year
          if month is None: month = today.month
          year = int(year)
          month = int(month)
  
          if year == today.year and month == today.month:
              weekNum = gregorian_to_week_date(today)[1]
          else:
              weekNum = gregorian_to_week_date(dt.date(year, month, 7))[1]
          weeklyUrl = myurl + self.reverse_subpage('serveWeek',
                                                   args=[year, weekNum])
          listUrl = myurl + self.reverse_subpage('serveUpcoming')
  
          prevMonth = month - 1
          prevMonthYear = year
          if prevMonth == 0:
              prevMonth = 12
              prevMonthYear -= 1
  
          nextMonth = month + 1
          nextMonthYear = year
          if nextMonth == 13:
              nextMonth = 1
              nextMonthYear += 1
  
          # TODO Consider changing to a TemplateResponse
          # https://stackoverflow.com/questions/38838601
          return render(request, "joyous/calendar_month.html",
                        {'self':         self,
                         'page':         self,
                         'version':      __version__,
                         'year':         year,
                         'month':        month,
                         'today':        today,
                         'yesterday':    today - dt.timedelta(1),
                         'lastweek':     today - dt.timedelta(7),
                         'prevMonthUrl': myUrl(prevMonthYear, prevMonth),
                         'nextMonthUrl': myUrl(nextMonthYear, nextMonth),
                         'prevYearUrl':  myUrl(year - 1, month),
                         'nextYearUrl':  myUrl(year + 1, month),
                         'weeklyUrl':    weeklyUrl,
                         'listUrl':      listUrl,
                         'thisMonthUrl': myUrl(today.year, today.month),
                         'monthName':    MONTH_NAMES[month],
                         'weekdayAbbr':  weekday_abbr,
                         'events':       self._getEventsByWeek(request, year, month)})