表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。 表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。而在HTML里面,在地址栏输入一个URL然后打开,这样发送的是一个get请求,若是要使用POST请求,就需要使用表单了。
HTML中的表单就是由form的标签来声明的,举个栗子:
<form action="login" method="post"> <label>username:</label> <input type="text" name="username"><br /> <label>password:</label> <input type="password" name="password"><br /> <input type="submit" name="submit"> <form>
上面代码中,由form标签包含的部分便是表单的内容,其中关注其中的input部分,这个表单中有三个input,一个是text类型的,代表普通的文本输入,一个是password类型的,代表密码输入,一个是submit类型的,是一个提交的按钮;form标签定义了两个属性,一个是action,代表这个表单提交的路径,一个是method,代表这个表单提交的方法,缺省为GET。接下来详细说明一下上述例子的具体过程,当用户点下submit的按钮的时候,这时候浏览器就向action的路径发送了一个POST请求,请求的内容是下面这个样子的
data = { 'username':'XXXXXXXX', 'password':'XXXXXXXX' }
就是将各个除了submit之外的input的name作为key值,实际填写的数据作为value值作为数据包,发送了一个POST请求,当然,如果吧method改为get的话,那么发送的就是GET请求了。接下来,服务器所接收到的的请求数据就跟从客户端程序那边发过来的数据是一样的了,接下来就是根据发送过来的数据,做对应的处理然后返回了。
有了上述知识之后,我们就开始做一个简单的注册登录系统。我们做的注册登录系统是有注册功能和登录功能,注册后服务器将注册信息存储到本地,登录时验证注册消息是否正确。web.py里面有一些template里面已经有了一些支持,具体代码如下:
# -*- coding: cp936 -*- import web import os urls = ( '/', 'hello', '/login', 'login', '/regist', 'regist' ) app = web.application(urls, globals()) class hello: def __init__(self): self.render = web.template.render('templates/') def GET(self): return self.render.form() class login: def POST(self): para = web.input() username = para['username'] password = para['password'] #TODO:... #if authenticate(username,password): #return render.hello(username) return 'hello world' class regist: def GET(self): return 'hello world' #return self.render.form() def POST(self): para = web.input() username = para['username'] password = para['password'] #TODO:... return 'hello world' if __name__ == '__main__': app.run()
运行效果如下挫图:想要自己搞得美观一点,可以自己找一些相关资料!这个实现的就是输入密码,返回值。你可以看到没有本地保存,是的,这就是给你在TODO那里留的坑!然后密码匹配什么的把上面的login类那里的注释去掉即可!
随便输入用户名密码可得:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。
Python实现注册登录系统
- Author -
Infi_chu声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@