PythonAnywhere.com の web.py プラットフォームを使用して簡単な Web スクリプトを作成しようとしています。私の意図は、テキスト ボックスのデータを取得し、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 に 2 つのテンプレートがあり、これはフォームを格納します。
$def with (form)
<form name="main" method="post">
$:form.render()
<input type="submit" name="send" id="envia" value="Ok" /> </form>
そして、これは POST の後に結果を与えるはずです:
$def with (nome)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
Congratulations $:nome !
</body>
</html>
[OK] ボタンを押すまで、すべて正常に動作します。適切なテンプレートが表示されますが、$nome 変数は表示されません。この動作は次のリンクで確認できます: http://jonathan_hepp.pythonanywhere.com/
私は web.py と PythonAnywhere を始めているので、間違っていることがあるはずですが、それを見つけることができません。助けていただけませんか?ありがとう。
編集:
テキストボックスの値を文字列として渡すと、結果が異なることがわかりました。結果ページには「おめでとうなし!」と表示されます。そのため、実際には POST がテキストボックスに入力している値を受け取っていないと思います。したがって、コードは問題ないように見えますが、フォームの入力の値に到達できないため、どういうわけか私はそれを正しくしませんでした。まだ動作していません。
解決済み:
Ok。form.Form()
このオプションは、実際には html フォーム出力を作成しないことに気付きました。実際、formtest ページのソース コードを見ると、フォームが単純な . そのため、フォームをhtmlで直接formtestテンプレートに作成しただけで、かなりうまく機能するようになりました。ばかげた間違いですが、他の誰かがそれを経験した場合は、同じことをしてください. 皆さん、ありがとうございました。