Найти - Пользователи
Полная версия: Вывод правильной ошибки валидация url
Начало » Django » Вывод правильной ошибки валидация url
1
polzun
Добрый вечер, нужно сделать валидацию для поля url, чтобы шла проверка существует ли сайт, который вводит пользователь.

Добавлено:

from django.core.exceptions import ValidationError
import urllib2
import urllib

def url_validation(value):
resp = urllib.urlopen(value).getcode()
if resp != 200:
raise ValidationError(u'Site is not working')

в поле урл

url = models.URLField(validators=, verbose_name=u“Относительный адрес рекламируемой страницы”, max_length=128, null=False,
blank=False, help_text="http://anydomain.xx")

При введении правильного адреса, вида http://anydomain.xx данные принимаются.
При введении несуществующего сайта вместо Site is not working выдает ошибку getaddrinfo failed
Подскажите, пожалуйста, из-за чего это происходит и как привести это к правильной форме ошибки?

Alen
import urllib
def url_validator(value):
    site_test = lambda x: urllib.urlopen(x).getcode() == 200
    try:
        res = site_test(value)
    except IOError:
        res = False
    return res
Alen
P.S. Я бы наверное проверял вначале существование DNS-записи, ответ от сайта может идти долго.

Используется пакет dnspython

def check_dns(value):
    import dns.resolver as resolver
    try:
        return bool(resolver.query(value))
    except resolver.NXDOMAIN:
        return False
polzun
спасибо, вот еще одно решение, которое помогло через try

def url_validation(value):
try:
resp = urllib.urlopen(value).getcode()
except:
raise ValidationError('')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB