python-3.x - 使用 python3 和 mod_wsgi(无 Django)的基本 Web 表单示例?

标签 python-3.x mod-wsgi wsgi

我有一个 apache + mod_wsgi + python3.1 设置。 (简单,没有 Django 或其他框架。)我可以编写输出 HTML 的应用程序,但我似乎无法让基本的 Web 表单 + POST 解析器工作,所以我也可以处理输入。我在网上找到了一些使用 python2 已有数年历史的示例,还有几页描述了 python3 的“您应该注意的问题”,这使得 python2 示例已过时(python3 新的编码问题的长列表等)

有没有人碰巧有 python3 代码(“def application(environ, start_response):...”),当你提交(POST)它时,它会建立一个带有几个短菜单的小型 UTF-8 网络表单, 将那些 UTF-8 菜单选项放入 python3 字符串中?一个 python3 脚本可以正确处理关于告诉它从请求中读取正确字节数的问题,不会为非 ASCII 字符修改 UTF-8,不使用不推荐使用的函数等,可以使用作为尝试使用 mod_wsgi + python3 进行输入和输出的人们的基本模板?

最佳答案

from urllib.parse import parse_qsl

def application(environ, start_response):
    try:
        path = environ['PATH_INFO']
    except KeyError:
        path = environ['REQUEST_URI'].decode('utf-8').split('=', 1)[1]
    method = environ['REQUEST_METHOD']
    get = dict(parse_qsl(environ['QUERY_STRING'], keep_blank_values=True))
    post = dict(parse_qsl(environ['wsgi.input'].read().decode('utf-8')))

    if path == '/my_form':
        start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')])
        yield '''\
<form action="" method="POST">
    <label for="name">What is your name?</label>
    <input type="text" name="name"/>
    <input type="submit"/>
</form>'''.encode('utf-8')
        if method == 'POST' and 'name' in post:
            yield "<p>Hello, {}!</p>".format(post['name']).encode('utf-8')
    else:
        start_response('404 Not Found', [('Content-Type', 'text/html')])
        yield "<h1>404 Not Found</h1>".encode('utf-8')

关于python-3.x - 使用 python3 和 mod_wsgi(无 Django)的基本 Web 表单示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11010437/

相关文章:

python - pysqlcipher 安装 - SyntaxError : Missing parentheses in call to 'print'

python - __iter__ 返回迭代器对象本身的目的是什么?

python-3.x - 如何减少数组中的重复数据

python - mod_wsgi错误:ImportError:dlopen(/usr/local/lib/python3.6/site-packages/cv2.so,2):找不到符号:_iconv

python - 为什么某些 mysql 连接在删除 + 插入后选择 mysql 数据库中的旧数据?

python-3.x - 为什么在数据帧上调用 sum() 会生成错误的数字?

Django 登录 apache vhost 错误文件,如何修复

python-3.x - Numpy 数组/asarray 泄漏?

python - 将命令行参数传递给 uwsgi 脚本

python - Flask 和 Apache2 : No module named app