基于pythoncgi的动态表单数据

2024-10-02 08:28:34 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我决定学习基本的Python CGI。最好的实践方法是在我的头脑中建立一个简单的项目,然后实施它。这个项目是这样的:我将生成一个表单,首先由一个“输入类型文本”来获得一个分数,然后两个“输入类型提交”组成,其中一个是“添加新的分数”,另一个是“计算”。。。首先,用户将输入一个成绩,如果他提交了calculate,该成绩将转换为4个基点的GPA。但只要他提交add new grade,新的“input type text”就会继续生成,他会输入他想要的分数,然后继续提交calculate,这将返回以4为基数的GPA。好吧,至少这是我想要的。在

我在我的Windows10电脑上使用WAMP

但我有两个问题。首先,我无法设置WAMP服务器来运行我编写的脚本。这就是为什么我不知道它是否能如期工作。我转到我的C:\wamp\bin\apache\apache2.4.23\conf目录,在httpd.conf文件中,我在适当的位置添加了Options Indexes FollowSymLinks Multiviews ExecCGI行,并取消了{}行的注释。然后我把我的脚本放到目录C:\wamp\www\。但我的浏览器一直在搜索,然后给出超时消息。在

第二个问题是,我怀疑代码是否能按预期工作,因为我不知道如何检查是否设置了“input typesubmit”。我的脚本如下:

#!C:\Users\Nima\AppData\Local\Programs\Python\Python36-32\Python.exe import cgi def convertNearestBase(point): bases = [0.0, 0.3, 0.7, 1.0, 1.3, 1.7, 2.0, 2.3, 2.7, 3.0, 3.3, 3.7, 4.0] minVal = 0.4 result = 0 for base in bases: if minVal > abs(point - base): minVal = abs(point - base) result = base return result def convertSinglePoint(point): transpoint = point/20 - 1 return convertNearestBase(transpoint) i = 1 form = cgi.FieldStorage() sumVal = convertSinglePoint(form.getvalue("point1")) addNew = form.getvalue("addNew") calc = form.getvalue("calculate") print('Content-Type: text/plain\n\n') print('<html><head><title>Online GPA Converter</title>') print('<link rel="stylesheet" type="text/css" href="main.css" /></head>') print('<body><h1>Online GPA Converter</h1><div class="container">') print('<form method="post" action="">') print('Enter point: <input type="number" name="point1" min="0" max="100" />') print('<input type="submit" name="addNew" value="Add New" />') while not calc: if addNew: i += 1 textEditName = "point" + str(i) print('Enter point: <input type="number" name="{}" min="0" max="100" />'.format(textEditName)) print('<input type="submit" name="addNew" value="Add New" />') point = form.getvalue(textEditName) sumVal += convertSinglePoint(point) print('<input type="submit" name="calculate" value="Calculate GPA" />') print('</form></div>') finalPoint = convertNearestBase(sumVal/i) if calc: print('<p>Your GPA is {}</p>'.format(finalPoint)) print('</body></html>')

我知道我要求的太多了,但我真的需要帮助。请帮帮我。在


Tags: textnameform脚本inputbasetype分数
1条回答
网友
1楼 · 发布于 2024-10-02 08:28:34

尼玛,CGI真的是过时的技术。有两个原因:性能和复杂性。CGI为每个请求生成新进程。这增加了太多的开销。现代的替代品是FastCGI。但它本身的水平太低了。如果您只想学习如何在Python上编写web应用程序,最好从一个现代框架开始。我建议使用flask,因为它非常简约和简单,但是非常强大并且有很好的文档记录。它有适合调试的内置web服务器。在

相关问题 更多 >

    热门问题