Resposta ao exercício

Aqui está uma solução, na forma de um programa em Python e um template html para solicitar, ao usuário, além de seu nome também o nome do verbo. Primeiro o programa em Python:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

import MySQLdb 
dados = MySQLdb.connect(host="192.168.1.104", 
                        port=3306,            
                        user="root",          
                        passwd="artista",     
                        db="conjuga")         
cobra = dados.cursor() 
msg_conjugado = '' 
verbo = '' 
import urllib2 

from flask import Flask, render_template, request 
from flask.ext.wtf import Form 
from wtforms import TextField, SubmitField 
app = Flask(__name__) 
app.secret_key = 'chave secretissima' 
@app.route('/', methods=['GET', 'POST']) 

def dados(): 
    formulario = Formulario() 
    if request.method == 'GET': 
        return render_template('formulario.html', formulario = formulario) 
 
    elif request.method == 'POST': 
        verbo = request.form['verbo'] 
        msg_conjugado = '' 
        frequencia_bd = 0 
        conjugado = ['', '', '', '', '', ''] 
        pessoas = ['Eu', 'Tu', 'Ele', u'Nós', u'Vós', 'Eles'] 
        conjuga_ar = ['o', 'as', 'a', 'amos', 'ais', 'am'] 
        conjuga_er = ['o', 'es', 'e', 'emos', 'eis', 'em'] 
        conjuga_ir = ['o', 'es', 'e', 'imos', 'is', 'em'] 
        endereco_web = 'http://pt.wiktionary.org/wiki/' + verbo 
        req_web = urllib2.Request(endereco_web, headers={'User-Agent': "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0"}) 
        try: 
            conteudo_web = urllib2.urlopen(req_web) 
            conteudo_web = conteudo_web.read() 
        except urllib2.HTTPError, erro: 
            conteudo_web = erro.read() 
#     pesquisa se o verbo e regular 
        conteudo_web = conteudo_web.decode('utf-8').encode('ascii', 'replace') 
#    conteudo_web_mini = conteudo_web[:70]  # usado apenas com o template teste.html 
        verbo_existe = str("Verbo regular da " in conteudo_web) 
        if ("Verbo regular da " in conteudo_web): 
            existe = cobra.execute(('SELECT verbo FROM verbo WHERE verbo = %s'), (verbo)) 
            if existe > 0: 
                cobra.execute(('SELECT frequencia FROM verbo WHERE verbo=%s'), (verbo)) 
                frequencia_bd = cobra.fetchone() 
                frequencia_bd = frequencia_bd[0] 
                cobra.execute('UPDATE verbo SET frequencia = %s WHERE verbo = %s', (frequencia_bd + 1, verbo)) 
#                dados.commit() 
            else: 
                cobra.execute('INSERT INTO verbo (verbo, frequencia, regular) VALUES(%s, %s, %s)', (verbo, 1, 1)) 
                dados.commit() 
            termina_em = verbo[-2:]  
            if termina_em == 'ar': 
                for i in range(6): 
                    conjugado[i] = pessoas[i]+' '+verbo[:-2]+conjuga_ar[i] 
            elif termina_em == 'er': 
                for i in range(6):  
                    conjugado[i] = pessoas[i]+' '+verbo[:-2]+conjuga_er[i] 
            elif termina_em == 'ir': 
                for i in range(6): 
                    conjugado[i] = pessoas[i]+' '+verbo[:-2]+conjuga_ir[i] 
            for i in range(6): 
                msg_conjugado = msg_conjugado + conjugado[i] + '
' texto = u'Olá, ' + request.form['nome'] + ' ' + request.form['sobrenome'] + '! ' + '
' + u'O verbo que você informou é: ' + verbo + '
' + msg_conjugado return texto class Formulario(Form): nome = TextField("Nome") sobrenome = TextField("Sobrenome") verbo = TextField("Verbo") enviar = SubmitField("Enviar") if __name__ == '__main__': app.debug = True app.run(host='0.0.0.0')

Note que, na classe Formulario, simplesmente foi feita a modificação necessária para que ela inclua um campo para o Verbo. O restante do programa foi feito com código reaproveitado de nossas versões anteriores e, em caso de dúvida, você pode consultar os capítulos 12 e 13. Em especial, note o que retornamos no final da condição elif:

texto = u'Olá, ' + request.form['nome'] + ' ' + request.form['sobrenome'] + '! ' + '
' + u'O verbo que você informou é: ' + verbo + '
' + msg_conjugado return texto

Tudo isto poderia, também ser substituído por algo como:

return render_template('resposta.html', variavel1 = variavel1 etc.) 

Que tal melhorar usar esta solução e também melhorar o visual de sua página caprichando no arquivo estilo.css?



Design: Dobro Comunicação. Desenvolvimento: Brod Tecnologia. Powered by Drupal