Веб-форма с Web.py на PythonAnywhere

Я пытаюсь сделать простой веб-скрипт, используя платформу web.py от PythonAnywhere.com. Моя цель - создать простую форму, которая получает данные из текстовых полей и может работать с ними так же, как мы это делаем с PHP и так далее. Это мой основной скрипт:

import web
from web import form
import MySQLdb

render = web.template.render('/home/user/templates/')

conn = MySQLdb.connect("mysql.server","user","*********","userdb")
curs = conn.cursor()

curs.execute('''create table if not exists Dados (
id int not null auto_increment primary key,
nome varchar(200),
item1 varchar(50),
item2 varchar(50),
item3 varchar(50),
item4 varchar(50),
item5 varchar(50));
''')

urls = (
  '/', 'index'
)

formula = form.Form(
    form.Textbox('Nome', id='nome'),
    form.Textbox('Item 1', id='it1'),
    form.Textbox('Item 2', id='it2'),
    form.Textbox('Item 3', id='it3'),
    form.Textbox('Item 4', id='it4'),
    form.Textbox('Item 5', id='it5'),
    )


class index:
    def GET(self):
        form = formula()        
        return render.formtest(form)

    def POST(self):
        form = formula()        
        return render.finaliza(form['Nome'].value)

# comment out these two lines if you want to use another framework
app = web.application(urls, globals())
application = app.wsgifunc()

Затем у меня есть два шаблона в HTML, этот хранит форму:

$def with (form)

$:form.render()

И это должно дать результат после POST:

$def with (nome)




Untitled Document



Congratulations $:nome !


Все работает хорошо, пока я не нажму кнопку Ok. Он показывает правильный шаблон, но не показывает переменную $nome. Вы можете проверить это поведение по этой ссылке: http://jonathan_hepp.pythonanywhere.com/

Я начинаю с web.py и PythonAnywhere, поэтому должно быть что-то, что я делаю неправильно, но я не могу найти это. Не могли бы вы мне помочь? Спасибо.

EDIT:

Я только что обнаружил, что если я передаю значение textbox как строку, результат отличается. На странице результата написано "Congratulations None!". Это заставляет меня думать, что на самом деле POST не получает значение, которое я ввожу в текстовое поле. Итак, код вроде бы в порядке, но я как-то не так сделал, поэтому он не может получить значение в форме ввода. Все еще не работает.

РЕШЕНО:

Ок. Я понял, что опция form.Form() на самом деле не создает и не выводит html форму. На самом деле, когда вы смотрите на исходный код страницы formtest, вы видите, что то, что я предполагал, было формой, отображается как простое . Поэтому я просто сделал форму в шаблоне formtest непосредственно в html и теперь она работает довольно хорошо. Просто глупая ошибка, но если кто-то еще столкнется с этим, просто сделайте то же самое. Спасибо всем.

5
задан hwjp 9 June 2012 в 09:37
поделиться