首先尝试一个简单的登录界面demo。
前端
前端包含一个可以向后端提交数据的表单,代码如下(参考菜鸟教程):
<!Doctype html>
<html>
<head>
<meta charset="utf-8">
<title>
login
</title>
</head>
<body>
<form action="/cgi-bin/backend.py" method="post" target="_blank" accept-charset="UTF-8">
<!-- 在新页面打开后端文件;accept-charset属性用来接收中文 -->
<input type="text" name="name" value="请输入姓名"> <br>
<input type="password" name="password"> <br>
<input type="checkbox" name="checkbox"> <br>
<input type="radio" name="radio"> <br>
<input type="textarea" name="textarea"> <br>
<input type="submit" value="提交">
</form>
</body>
</html>
后端
解析前端数据
首先我们在后端解析前端发回的数据,参考菜鸟教程。
但是在显示时发生了中文乱码现象,查阅资料Python中CGI模块中文乱码的问题解决方案、html中form表单提交中文乱码问题基本解决办法后,解决了这一问题。
#!G:\Programming\Anaconda3\pkgs\python-3.7.7-h60c2a47_2\python.exe
import cgi, cgitb
form = cgi.FieldStorage()
name = form.getvalue("name") if form.getvalue("name") else "Empty"
password = form.getvalue("password") if form.getvalue("password") else "Empty"
checkbox = form.getvalue("checkbox") if form.getvalue("checkbox") else "off"
radio = form.getvalue("radio") if form.getvalue("radio") else "off"
textarea = form.getvalue("textarea") if form.getvalue("textarea") else "Empty"
print("Content-type:text/html\n")
print("<html>")
print("<head>")
print("<title>backend</title>")
print("</head>")
print("<body>")
print("<p>name: " + name + "</p>")
print("<p>password: " + password + "</p>")
print("<p>checkbox: " + checkbox + "</p>")
print("<p>radio: " + radio + "</p>")
print("<p>textarea: " + textarea + "</p>")
print("</body>")
print("</html>")
可以在弹出的窗口看到前端输入的信息,证明后端成功收到了数据。
后端向前端反馈信息
本来以为不会是非常复杂的东西……但是似乎并非如此。至少需要后端向前端发送http请求,且前端进行监听。因此直接使用框架进行学习。
由于正在完成的一个小组项目使用的是Vue+Django的前后端组合,因此这里直接学习Django。