这种方法行不通,因为您试图在服务器端构建页面,然后期望输入客户端,然后再做一些服务器端工作来构建页面。 但是(而且我自己也不是专家,所以我希望得到一些纠正),一旦您构建了页面服务器端并将其发送给客户端,您就需要在客户端上使用某种形式的JavaScript来获取更多信息。从服务器(AJAX是常见的方式)。
如果您可以使用“ submit按钮将用户带到另一个页面来查看结果,则不需要Java脚本。 我会像这样构造您要尝试执行的操作(请记住,我现在无法对此进行测试,因此您必须对其进行调试):
在文件form.html :
Personal information:
Last name:
First name:
MidtermGrade:
FinalGrade:
FirstHW:
SecondHW:
ThirdHW:
请注意,我在表单中填写了action和method属性。 这是纯HTML。 提交表单后,用户将被重定向到get_results.py ,后者必须读取表单附加到页面请求的POST信息。
就像是:
在文件get_results.html :
import cgi
import cgitb
import pymysql
cgitb.enable()
# This *should* get the fields from the previous form.
# I can't test it now though...
form = cgi.FieldStorage()
# this part is almost straight from https://github.com/PyMySQL/PyMySQL
import pymysql.cursors
# Connect to the database
connection = pymysql.connect(host='localhost',
user='user',
password='passwd',
db='db',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
student_sql = 'INSERT INTO `students` (lastname, firstname) VALUES (%s, %s)'
cursor.execute(student_sql,(form['lastname'], form['firstname']) )
# replacing some filed names with '...'. Fill them in
grade_sql = 'INSERT INTO `grades` (midtermgrade, finalgrade, ...) VALUES (%d, %d, %d, %d)'
cursor.execute(grade_sql, form['midtermgrade'], form['finalgrade'], ...)
connection.commit()
with connection.cursor() as cursor:
# Read a single record
sql = "SELECT * FROM students"
cursor.execute(sql))
for result in cursor.fetchall():
print(result, '
')
finally:
connection.close()
那可能是最简单的方法。 但是,要知道这一点很重要, 这种方法不会扩展到更大的项目 。 对于初学者,您需要:
模板语言,因此您可以将原始HTML和插入其中的代码分开
URL操作(因此,类似于mysite.com//grades的用户将直接获得其成绩)
用户身份验证(我们不想让学生看其他学生的成绩吗?)
一个ORM而不是直接处理您的数据库(我没有在其中存放过多的库存,但是有些人对此发誓)
如果您想做的比这大得多,请考虑使用类似Flask或Django的Python之类的框架,或其他适用于其他语言的解决方案。