Docs for IS_URL

[ Python Tutorial ] [ Python Libraries ] [ web2py epydoc ]

Description


<type 'type'> extends (<class 'gluon.validators.Validator'>,)





















































































Rejects a URL string if any of the following is true:

*
The string is empty or None
* The string uses characters that are not allowed in a URL
* The string breaks any of the HTTP syntactic rules
* The URL scheme specified (if one is specified) is not 'http' or 'https'
* The top-level domain (if a host name is specified) does not exist

(These rules are based on RFC 2616: http://www.faqs.org/rfcs/rfc2616.html)

This function only checks the URL's syntax. It does not check that the URL
points to a real document, for example, or that it otherwise makes sense
semantically. This function does automatically prepend 'http://' in front
of a URL in the case of an abbreviated URL (e.g. 'google.ca').

If the parameter mode='generic' is used, then this function's behavior
changes. It then rejects a URL string if any of the following is true:

*
The string is empty or None
* The string uses characters that are not allowed in a URL
* The URL scheme specified (if one is specified) is not valid

(These rules are based on RFC 2396: http://www.faqs.org/rfcs/rfc2396.html)

The list of allowed schemes is customizable with the allowed_schemes
parameter. If you exclude None from the list, then abbreviated URLs
(lacking a scheme such as 'http') will be rejected.

The default prepended scheme is customizable with the prepend_scheme
parameter. If you set prepend_scheme to None then prepending will be
disabled. URLs that require prepending to parse will still be accepted,
but the return value will not be modified.

IS_URL is compatible with the Internationalized Domain Name (IDN) standard
specified in RFC 3490 (http://tools.ietf.org/html/rfc3490). As a result,
URLs can be regular strings or unicode strings.
If the URL's domain component (e.g. google.ca) contains non-US-ASCII
letters, then the domain will be converted into Punycode (defined in
RFC 3492, http://tools.ietf.org/html/rfc3492). IS_URL goes a bit beyond
the standards, and allows non-US-ASCII characters to be present in the path
and query components of the URL as well. These non-US-ASCII characters will
be escaped using the standard '%20' type syntax. e.g. the unicode
character with hex code 0x4e86 will become '%4e%86'

Args:
error_message: a string, the error message to give the end user
if the URL does not validate
allowed_schemes: a list containing strings or None. Each element
is a scheme the inputed URL is allowed to use
prepend_scheme: a string, this scheme is prepended if it's
necessary to make the URL valid

Code Examples::

INPUT(_type='text', _name='name', requires=IS_URL())
>>>
IS_URL()('abc.com')
(
'http://abc.com', None)

INPUT(_type='text', _name='name', requires=IS_URL(mode='generic'))
>>>
IS_URL(mode='generic')('abc.com')
(
'abc.com', None)

INPUT(_type='text', _name='name',
requires=IS_URL(allowed_schemes=['https'], prepend_scheme='https'))
>>>
IS_URL(allowed_schemes=['https'], prepend_scheme='https')('https://abc.com')
(
'https://abc.com', None)

INPUT(_type='text', _name='name',
requires=IS_URL(prepend_scheme='https'))
>>>
IS_URL(prepend_scheme='https')('abc.com')
(
'https://abc.com', None)

INPUT(_type='text', _name='name',
requires=IS_URL(mode='generic', allowed_schemes=['ftps', 'https'],
prepend_scheme='https'))
>>>
IS_URL(mode='generic', allowed_schemes=['ftps', 'https'], prepend_scheme='https')('https://abc.com')
(
'https://abc.com', None)
>>>
IS_URL(mode='generic', allowed_schemes=['ftps', 'https', None], prepend_scheme='https')('abc.com')
(
'abc.com', None)

@author: Jonathan Benn


Attributes


IS_URL.__call__ <type 'instancemethod'> belongs to class <type 'instancemethod'>
Args: value: a unicode or regular string, the URL to validate Returns: a (string, string) tuple, where tuple[0] is the modified input value and tuple[1] is either None (success!) or the string error_message. The input value will never be modified in the case of an error. However, if there is success then the input URL may be modified to (1) prepend a scheme, and/or (2) convert a non-compliant unicode URL into a compliant US-ASCII version.

IS_URL.__class__ <type 'type'> extends (<type 'object'>,) belongs to class <type 'type'>
type(object) -> the object's type type(name, bases, dict) -> a new type

IS_URL.__delattr__ <type 'wrapper_descriptor'> belongs to class <type 'wrapper_descriptor'>
x.__delattr__('name') <==> del x.name

IS_URL.__dict__ <type 'dictproxy'> belongs to class <type 'dictproxy'>

IS_URL.__doc__ <type 'str'> belongs to class <type 'str'>
str(object='') -> string Return a nice string representation of the object. If the argument is a string, the return value is the same object.

IS_URL.__format__ <type 'method_descriptor'> belongs to class <type 'method_descriptor'>
default object formatter

IS_URL.__getattribute__ <type 'wrapper_descriptor'> belongs to class <type 'wrapper_descriptor'>
x.__getattribute__('name') <==> x.name

IS_URL.__hash__ <type 'wrapper_descriptor'> belongs to class <type 'wrapper_descriptor'>
x.__hash__() <==> hash(x)

IS_URL.__init__ <type 'instancemethod'> belongs to class <type 'instancemethod'>

IS_URL.__module__ <type 'str'> belongs to class <type 'str'>
str(object='') -> string Return a nice string representation of the object. If the argument is a string, the return value is the same object.

IS_URL.__new__ <type 'builtin_function_or_method'> belongs to class <type 'builtin_function_or_method'>
T.__new__(S, ...) -> a new object with type S, a subtype of T

IS_URL.__reduce__ <type 'method_descriptor'> belongs to class <type 'method_descriptor'>
helper for pickle

IS_URL.__reduce_ex__ <type 'method_descriptor'> belongs to class <type 'method_descriptor'>
helper for pickle

IS_URL.__repr__ <type 'wrapper_descriptor'> belongs to class <type 'wrapper_descriptor'>
x.__repr__() <==> repr(x)

IS_URL.__setattr__ <type 'wrapper_descriptor'> belongs to class <type 'wrapper_descriptor'>
x.__setattr__('name', value) <==> x.name = value

IS_URL.__sizeof__ <type 'method_descriptor'> belongs to class <type 'method_descriptor'>
__sizeof__() -> int size of object in memory, in bytes

IS_URL.__str__ <type 'wrapper_descriptor'> belongs to class <type 'wrapper_descriptor'>
x.__str__() <==> str(x)

IS_URL.__subclasshook__ <type 'builtin_function_or_method'> belongs to class <type 'builtin_function_or_method'>
Abstract classes can override this to customize issubclass(). This is invoked early on by abc.ABCMeta.__subclasscheck__(). It should return True, False or NotImplemented. If it returns NotImplemented, the normal algorithm is used. Otherwise, it overrides the normal algorithm (and the outcome is cached).

IS_URL.__weakref__ <type 'getset_descriptor'> belongs to class <type 'getset_descriptor'>
list of weak references to the object (if defined)

IS_URL.formatter <type 'instancemethod'> belongs to class <type 'instancemethod'>
For some validators returns a formatted version (matching the validator) of value. Otherwise just returns the value.