Форум сайта python.su
0
py.user.next
-rwxrwxrwx 1 anton anton 261 июля 7 14:25 cgi101.py -rwxrwxrwx 1 anton anton 12288 июля 10 16:10 class-shelve.db -rwxrwxrwx 1 anton anton 2235 июля 11 12:28 peoplecgi.py
#!usr/bin/python3 import cgi, shelve, sys, os shelvename = 'class-shelve' fildnames = ('name', 'age', 'job', 'pay') form = cgi.FieldStorage() print('Content-type: text/html\n') sys.path.insert(0, os.getcwd()) #главный шаблон разметки html replyhtml = """ <html> <title>People input form</title> <body> <form method=POST action="peoplecgi.py"> <table> <tr><th>key<td><input type=text name=key value="%(key)s" $ROWS$ </table> <p> <input type=submit value="Fetch", name=action> <input type=submit value="Update", name=action> </form> </body></html> """ #вставить разметку с данными в позицию $ROWS$ rowhtml = '<tr><th>%s<td><input type=text name=%s value="%%(%s)s">\n' rowshtml='' for fieldname in fieldnames: rowshtml += (rowhtml % ((fieldname,) * 3)) replyhtml = replyhtml.replace('$ROWS$',rowshtml) def htmlize(adict): new = adict.copy() for field in fielnames: value = new[field] new[field]= cgi.escape(repr(value)) return new def fetchRecord(db, form): try: key = form['key'].value record = db[key] fields = record.__dict__ fields['key'] = key except: fields = dict.fromkeys(fieldnames, '?') fields['key'] = 'Missing or invalid key' return fields def updateRecord(db, form): if not 'key' in form: fields = dict.fromkeys(fieldnames, '?') fields['key'] = 'Missing key input!' else: key = form['key'].value if key in db: record = db[key] else: from person import Person record = Person(name='?', age='?') for field in fieldnames: settatr(record, field, eval(form[field].value())) db[key] = record fields = record.__dict__ fields['key'] = key return fields db = shelve.open(shelvname) action = form['action'].value if 'action' in form else None if action == 'Fetch': fields = fetchRecord(db, form) elif action == 'Update': fields = updateRecord(db, form) else: fields = dict.fromkeys(fieldnames, '?') fields['key'] = 'Missing or invalid action!' db.close() print(replyhtml % htmlize(fields))
Офлайн
857
#!/usr/bin/python3 import cgi, shelve, sys, os shelvename = 'class-shelve' fieldnames = ('name', 'age', 'job', 'pay') form = cgi.FieldStorage() print('Content-type: text/html\n') sys.path.insert(0, os.getcwd()) #главный шаблон разметки html replyhtml = """ <html> <title>People input form</title> <body> <form method=POST action="peoplecgi.py"> <table> <tr><th>key<td><input type=text name=key value="%(key)s" $ROWS$ </table> <p> <input type=submit value="Fetch", name=action> <input type=submit value="Update", name=action> </form> </body></html> """ #вставить разметку с данными в позицию $ROWS$ rowhtml = '<tr><th>%s<td><input type=text name=%s value="%%(%s)s">\n' rowshtml = '' for fieldname in fieldnames: rowshtml += (rowhtml % ((fieldname,) * 3)) replyhtml = replyhtml.replace('$ROWS$',rowshtml) def htmlize(adict): new = adict.copy() for field in fieldnames: value = new[field] new[field]= cgi.escape(repr(value)) return new def fetchRecord(db, form): try: key = form['key'].value record = db[key] fields = record.__dict__ fields['key'] = key except: fields = dict.fromkeys(fieldnames, '?') fields['key'] = 'Missing or invalid key' return fields def updateRecord(db, form): if not 'key' in form: fields = dict.fromkeys(fieldnames, '?') fields['key'] = 'Missing key input!' else: key = form['key'].value if key in db: record = db[key] else: from person import Person record = Person(name='?', age='?') for field in fieldnames: settatr(record, field, eval(form[field].value())) db[key] = record fields = record.__dict__ fields['key'] = key return fields db = shelve.open(shelvename) action = form['action'].value if 'action' in form else None if action == 'Fetch': fields = fetchRecord(db, form) elif action == 'Update': fields = updateRecord(db, form) else: fields = dict.fromkeys(fieldnames, '?') fields['key'] = 'Missing or invalid action!' db.close() print(replyhtml % htmlize(fields))
[guest@localhost cgi-bin]$ ll peoplecgi.py class-shelve
-rw-r--r-- 1 apache apache 16384 июля 12 14:15 class-shelve
-rwxr--r-- 1 apache apache 2232 июля 12 14:42 peoplecgi.py
[guest@localhost cgi-bin]$
Офлайн
0
py.user.next
работает.
Еще раз спасибо Вам.
Офлайн