知识点:
1、python 变量是区分大小写。
2、web.input()
3、防止符号转义
4、数据库的like,%的含义
5、什么是类的操作符重载?
6、gost和get参数冲突了怎么办?
上堂笔记我们很简单的说了http协议, 接下来我们来继续看post能做什么?
网上有很多get和post区别, 我们的重点自己理解,还需要自己实践。
就目前我们掌握的知识:
GET
URL结构中,会用来传递。网站访问url结构,就是用get模式,能用post模式无法访问。
诞生http协议后,是先有get, 后有的post, 再没有post之前,浏览器和服务器是就是通过get传输数据, 具体方法就是url结构,利用url?变量=值来传输。服务器通过get收到
我们来补充一个get代码。
import web
urls = ('/',index)
app =web.application(urls,gobals())
class Index:
def GET(self):
data = web.input()
return '<h1>' + data.id +'</h1>'
$def with (movies)
$movies
浏览器: http://localhost:8080/?id=2
浏览器显示2
现在可以理解了吧,?代表查询。代表可以使用web.input.
如果是/?id=1&name=jack
POST呢?
用于用户提交数据和服务器互动,比如搜索系统,下面我们来准备一下:
1:数据库move 以前我们建立过
2:app.py
import web
urls = ('/',Index,'/move/(/d+),'Movies')
render = render.template('templates/')
db = web.database( dbn= 'sqlite' , db ='movesite.db')
app = web.applicationo(urls,gloabls())
class Index:
def GET:
moves = db.select('move')
return render.index(moves)
def POST:
data =web.input()
condition = r ' name like "% ' +data.title+ r'%'''
searchlist = db.select('move',where = condition,vars=locals())
return render.index(searchlist)
if __name__ = '__main__":
app.run()
$def with (move)
<html>
<head></head>
<body>
<form action='/' method = 'post'>
<input type = 'text' name = 'title' />
<input type='submit' value='搜索‘/>
</form>
<h1>$move</h1>
<h2>年份$move.year</h2>
</body>
</html>
``
目前上面的程序有问题,错误的地方待修正。
以上是app.py, 都是自己敲上去的,加强自己的理解,里面有三个新的知识,
+ 第一个是web.input
[官方文档]( http://webpy.org/cookbook/input.zh-cn )
+第二个是r''
防止转义字符, 如\t,我们都知道是table,但是我们确实需要\t呢, 这就需要r.
a = r'\t'
print a
+第三个是 selct * form 数据库 where 列 like "%name%' ,like的含义和%的含义。
like: 是模糊查询,如我们要找,张三, 搜索张,就可以找到跟张有关的值相关列。
% : 代表a%-匹配a开头,如张撒的。
%a, -- 匹配a结尾的。
##困惑未解决##:
1、?id=3&name =li
文档中web.input(id=[]) , 语法错误
错误, 估计中文翻译,id={}
函数参数确实奇怪, 如下面:
data= web.input(name='lixiang',id=3)
这个属于初始,默认值不过id={}, 应该说的是id=1&id=3