Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Вывод правильной ошибки валидация url [RSS Feed]

#1 Апрель 3, 2014 21:38:41

polzun
Зарегистрирован: 2014-04-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод правильной ошибки валидация url

Добрый вечер, нужно сделать валидацию для поля 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
Подскажите, пожалуйста, из-за чего это происходит и как привести это к правильной форме ошибки?

Отредактировано polzun (Апрель 3, 2014 21:52:33)

Офлайн

#2 Апрель 3, 2014 22:24:41

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Вывод правильной ошибки валидация url

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

Офлайн

#3 Апрель 3, 2014 22:53:59

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Вывод правильной ошибки валидация url

P.S. Я бы наверное проверял вначале существование DNS-записи, ответ от сайта может идти долго.

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

def check_dns(value):
    import dns.resolver as resolver
    try:
        return bool(resolver.query(value))
    except resolver.NXDOMAIN:
        return False

Отредактировано Alen (Апрель 3, 2014 22:55:49)

Офлайн

#4 Апрель 3, 2014 22:56:25

polzun
Зарегистрирован: 2014-04-03
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод правильной ошибки валидация url

спасибо, вот еще одно решение, которое помогло через try

def url_validation(value):
try:
resp = urllib.urlopen(value).getcode()
except:
raise ValidationError('')

Офлайн

  • Начало
  • » Django
  • » Вывод правильной ошибки валидация url[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version