def METHOD_NAME(self, attribute_name, request=None):
    """
    Returns the URL of a page referenced by a foreign key
    (or other attribute) matching the name ``attribute_name``.
    If the field value is null, or links to something other
    than a ``Page`` object, an empty string is returned.
    The result is also cached per-object to facilitate
    fast repeat access.
    Raises an ``AttributeError`` if the object has no such
    field or attribute.
    """
    if attribute_name in self._page_url_cache:
        return self._page_url_cache[attribute_name]
    if not hasattr(self, attribute_name):
        raise AttributeError(
            "'{}' object has no attribute '{}'".format(
                self.__class__.__name__, attribute_name
            )
        )
    page = getattr(self, attribute_name)
    if hasattr(page, "specific"):
        url = page.specific.get_url(getattr(self, "_request", None))
    else:
        url = ""
    self._page_url_cache[attribute_name] = url
    return url