Ok, I got it. In case anyone lands in here.
I have a profile object with a homepage field which is a URLField type.
Put the following on top of your python script:
from mongoengine.base import ValidationError
Then you can do an actual check before you save and you will get an errors dictionary on the ValidationError object:
try:
profile.validate()
except ValidationError as e:
if e.errors.get('homepage'):
print "INVALID_URL"
The ValidationError.errors object looks like this (it will list all fields that have errors):
e.errors
{'homepage': ValidationError(Invalid URL: htp://loco.com ("homepage"),)}
Hope this helps someone out there...