LINUX.ORG.RU

Captcha на Python?


0

2

Решил написать капчу на python. Хотелось бы, чтобы некий скрипт генерировал html страницу(на localhost для начала) с картинкой и полем для ввода текста и реагировал на оправление данных, проверял и снова генерировал страницу в зависимости от введенных значений(наверное лучше разделить на 2 скрипта?). Нашел библиотеки для django и примеры как их использовать. Так же выкопал у себя примеры функций для капчи

# coding: utf-8

def captcha():
    import StringIO
    import Image, ImageDraw, ImageFont
    from random import randint, choice

    key = ''.join( [choice('QWERTYUIOPLKJHGFDSAZXCVBNM1234567890') for i in xrange(5)] )
    
    img = Image.new('RGB', (100,30), 0xffffff )
    draw = ImageDraw.Draw(img)
    
    for i in xrange(40):
        draw.line( [(randint(0,100),randint(0,30)),(randint(0,100),randint(0,30))] ,  randint(0, 0xffffff), 1)
    
    font = ImageFont.truetype('/usr/share/fonts/truetype/freefont/FreeMono.ttf', 32)
    draw.text( (0,0), key, 0, font)
    
    f = StringIO.StringIO()
    img.save(f, "JPEG")
    raw = f.getvalue()
    
    return key,raw

Есть идеи в чем реализовать(django, pylons) или просто на прямую написать?

★★★★★
Ответ на: комментарий от sol13

>в том то и дело пишу ради освоения python

Тогда сначала напиши на CGI, потом с помощью какого-нибудь WSGI-сервера, а потом с помощью фреймворка. Поймёшь немного суть http заодно.

anonymous
()
Ответ на: комментарий от anonymous

суть http понимаю =) очень даже хорошо. просто не знаю как поступиться к данному вопросу, но для себя как бы решил что на django буду «калякать», не хочу писать cgi скрипты, достаточно их написал на perl.

sol13 ★★★★★
() автор топика
Ответ на: комментарий от sol13

>но для себя как бы решил что на django буду «калякать», не хочу писать cgi скрипты, достаточно их написал на perl.

Там от джанги то будет по сути только field для формы (хотя можно сделать отдельный app). А саму генерацию изображения и проверку лучше вынести в отдельный питоновский модулью

anonymous
()
Ответ на: комментарий от anonymous

А саму генерацию изображения и проверку лучше вынести в отдельный питоновский модулью

да, об этом тоже задумывался.

А вот как насчет pylons?

sol13 ★★★★★
() автор топика
Ответ на: комментарий от sol13

>да, об этом тоже задумывался.

Там, по правде, всё очень просто выходит, так как никакой джанговский код для создания капчи не нужен.

А вот как насчет pylons?

Сейчас в моде уже pyramid, а не пайлонс. Конкретнее ничего не скажу, формы на нём не писал.

Впрочем, если оно не для дальнейшего использования, а для обучения, то можно с формами не заморачиваться, а писать всё руками в шаблоне, но это нетруЪ.

anonymous
()
Ответ на: комментарий от sol13

>суть http понимаю =) очень даже хорошо. просто не знаю как поступиться к данному вопросу, но для себя как бы решил что на django буду «калякать», не хочу писать cgi скрипты, достаточно их написал на perl.

django - это фреймворк для написания сайтов с динамическим контентом, заточенных под новостные сайты. Капча, там есть, не одна, но сделана в виде приложения к джанго. Если хотите освоить джанго - напишите свой блог, форум или новостной сайт.

pylons - как фреймворк более «универсален», он предоставляет более универсальные инструменты(<-ИМХО)

И django, и pylons - оба годятся для сознадия веб-приложении, у вас же задача сделать только кусок функционала приложения.

Т.е. задайтесь другой целью(типа того же блога) и если уж так хотите реализуйте капчу в ней. 100% это даст более четкое представления о том, что из себя представляют django/pylons

Donnie_Darko
()
Ответ на: комментарий от anonymous

>Сейчас в моде уже pyramid, а не пайлонс.

только для модных ребят с хабра.

pylons 1.0 стабилен и на данный момент предоставляет современные инструменты. понятно, что через 3-4 года он устареет по сравнению с pyramid, но пока pyramid не готов для продакшена. да и разница между ними 20-25%. вот использую я сейчас sa+jinja2+wtforms на pylons, а когда перейду на pyramid, и продолжу их использовать...

Donnie_Darko
()
Ответ на: комментарий от Donnie_Darko

>pylons - как фреймворк более «универсален», он предоставляет более универсальные инструменты(<-ИМХО)

Джанго не менее универсален, просто в нём очень многие вещи прибиты более страшными гвоздями. Это, впрочем, не мешает универсальности, хотя иногда доставляет проблемы.

anonymous
()
Ответ на: комментарий от Donnie_Darko

pylons 1.0 стабилен и на данный момент предоставляет современные инструменты. понятно, что через 3-4 года он устареет по сравнению с pyramid, но пока pyramid не готов для продакшена. да и разница между ними 20-25%. вот использую я сейчас sa+jinja2+wtforms на pylons, а когда перейду на pyramid, и продолжу их использовать...

Откуда инфа. Pyramid очень даже готов.

uhbif19
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.