Форум сайта python.su
Пытаюс из формы
<html> <head><title>my site</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head> <body><h1>my site</h1> <form name='contact_us_form' action='/test.py' method='post'> <input placeholder="username" type='text' size=40 name='name' value='' /><br> <input placeholder="email" type='text' size=40 name='email' value='' /><br> <textarea placeholder="About" size=40 rows=20 cols=40 name='body'></textarea><br> <input type='submit' class='submit' value='Отправить' /> </form> </body></html>
def application(environ, start_response): fields = cgi.FieldStorage(environ['wsgi.input'], environ=environ) write = start_response('404 OK', [('Content-type', 'text/html')], [('Content-type', 'text/html')]) name = fields.getvalue("name") email = fields.getvalue("email") body = fields.getvalue("body") status = "200 OK" headers = [('Content-type','text/plain')] start_response(status, headers)
Отредактировано qeeon12 (Март 16, 2013 21:13:42)
Офлайн
#!/usr/bin/env python3 import cgi print('Content-Type: text/html; charset=utf-8') print() form = cgi.FieldStorage() for var in 'name', 'email', 'body': print(var, '->', form[var].value, '<br>')
Офлайн
Он по прежнему ругается на переменные name, email, body
File "/usr/lib/python2.7/cgi.py", line 541, in __getitem__ raise KeyError, key KeyError: 'name'
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName site.local
DocumentRoot /var/www/site.local
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/site.local>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Офлайн
Вот рабочий пример, работает без апача: http://bottlepy.org/docs/dev/tutorial.html#html-form-handling
в конце нужно дописать для запуска
from bottle import run run(host='localhost', port=8080, debug=True)
Отредактировано o7412369815963 (Март 17, 2013 09:59:28)
Офлайн
qeeon12я проверял на твоей странице, у меня работает на apache
Он по прежнему ругается на переменные name, email, body
qeeon12не, я думаю, ты неправильно скрипт расположил и страница неправильно на него ссылается
Может быть проблема в неправильной настройки апача?
Отредактировано py.user.next (Март 17, 2013 11:16:16)
Офлайн
Может в самом скрипте где-то ошибся, вот полный код:
import cgi def index(req): thetitle = "sample" mysite = siteheader(thetitle) mysite += sitebody(thetitle) mysite += sitefoot() return mysite def siteheader(title): str = "<html><head><title>" + title + "\n" str += "</title></head><body>\n" form=cgi.FieldStorage() for var in 'name', 'email', 'body': print(var, '->', form[var].value, '<br>') return str def sitefoot(): str = "\n</body></html>" return str def sitebody(title): str = "<h1>" + title + "</h1>\n" str += "<p>Hi mate!<br>\n" + \ "This is the testing python site example.<br><br>" + \ </a>\n" return str
Отредактировано qeeon12 (Март 17, 2013 12:42:41)
Офлайн
form.py
#!/usr/bin/env python # -*- encoding: utf-8 -*- import cgi print 'Content-Type: text/html; charset=utf-8' print form = cgi.FieldStorage() for var in 'name', 'email', 'body': print var, '->', form[var].value, '<br>'
<html> <head><title>my site</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head> <body><h1>my site</h1> <form name='contact_us_form' action='cgi-bin/form.py' method='post'> <input placeholder="username" type='text' size=40 name='name' value='' /><br> <input placeholder="email" type='text' size=40 name='email' value='' /><br> <textarea placeholder="About" size=40 rows=20 cols=40 name='body'></textarea><br> <input type='submit' class='submit' value='Отправить' /> </form> </body></html>
Отредактировано py.user.next (Март 17, 2013 21:05:05)
Офлайн