web.py的 cookie和session
来源:互联网 发布:多方电话会议 软件 编辑:程序博客网 时间:2024/04/28 08:16
这篇主要记录下web.py的cookie和session的学习过程。
这是目录树
.├── code.py├── config│ ├── __init__.py│ ├── setting.py│ └── url.py├── controllers│ ├── common.py│ ├── __init__.py│ └── views.py|── templetor ├── login.html └── success.html
setting.py里面存放数据库等信息,url.py配置url的信息,common.py是登录验证代码,views.py是显示页面【好像没什么用】,templetor文件夹就是网页模板了。
setting.py源码:
#!/usr/bin/env python
# coding: utf-8
import
web
db
=
web.database(dbn
=
'mysql'
, db
=
'dbname'
, user
=
'root'
, pw
=
'password'
)
render
=
web.template.render(
'templetor/'
, cache
=
False
)
web.config.debug
=
False
因为在web.py自带的服务器的调试模式下不能正常使用session,(原因请看cookbook),所以这里把调试模式设置为False–关闭。对了,好像没看到调试模式的功能解释,也懒得找,只知道在服务器运行的时候(python code.py),如果是在调试模式下,修改其他文件的代码后,不用重新启动服务器,服务器自动加载。
code.py源代码:
#!usr/bin/env python
# coding: utf-8
import
web
from
config.url
import
urls
app
=
web.application(urls,
globals
())
session
=
web.session.Session(app, web.session.DiskStore(
'sessions'
),
initializer
=
{
'login'
:"",
'user_name'
:
'guest'
})
def
session_hook():
web.ctx.session
=
session
app.add_processor(web.loadhook(session_hook))
if
__name__
=
=
"__main__"
:
app.run()
因为把业务处理的代码放在了不同的py文件中,所以在其它文件中是无法获得session的【这个好奇怪,cookbook说是子应用不行,难道把代码放在不同文件就是不同应用了?】,然后处理方法【参考cookbook】,就是添加处理器,这个现在只是知道这么做,到底底层怎么实现的,以后再看了。
额,源码一个个贴出来太麻烦了。。还是贴关键代码就好了。。urls.py的代码就不贴了。等下把代码打包下当附件。
登录验证的代码:
def
POST(
self
):
name, pwd
=
web.
input
().name, web.
input
().pwd
if
name !
=
None
and
pwd !
=
None
:
myvar
=
dict
(name
=
name)
result
=
db.select(
'tuser'
, myvar, what
=
'pwd'
)
if
result !
=
None
and
pwd
=
=
result[
0
].pwd:
web.setcookie(
'test'
,
'cookice_test'
,
60
)
session.loginned
=
True
session.username
=
name
return
render.success(name,
'cookie test'
)
raise
web.seeother(
'/login'
)
web.py的的数据库操作,真的是很简单啊。。直接select一下就ok了【参考:http://webpy.org/cookbook/select.zh-cn】。设置cookie也是很简单,setcookie()函数调用下就ok了【参考http://webpy.org/cookbook/cookies.zh-cn】。session的使用,很简单,就不说了。。
这是直接查看登录后页面的处理代码:
class
Success:
def
GET(
self
):
if
session.loginned
=
=
True
:
return
render.success(session.username, web.cookies().get(
'test'
))
return
render.login()
首先是判断session中的loginned是否为True,如果为True,则返回success.html页面,参数有session.username和cookie中的变量test的值。
success.html的源代码
$def with (name, str)
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
>
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=utf-8"
/>
<
title
>Welcome</
title
>
</
head
>
<
body
>
This is $str! $name!
</
body
>
</
html
>
学习中遇到的几个问题:
1、session在不同文件中的使用,之前认为是一个应用而已,所以各种尝试,不过有的方式可以。然后忘记哪些可以了,也不想重新在试了。现在记得尝试过的有:a、导入模块code中的session,b、用相同直接再声明一个,c、忘记了
2、success.html要声明两个变量,然后,因为无知,写成
$
def
with (name)
$
def
with (
str
)
结果毫无疑问的语法错误,然后找了很久才猜到要写在一起,无知啊~
3、导入模块的时候一直说找不到模块,后来想起了simple todo里面好像有个__init__.py的空文件(http://simple-is-better.com/news/309),当时以为没什么用,现在才知道,要添加这个空文件,才能把文件夹当成模块导入到其它代码中。
参考资料:
web.py的cookbook: http://webpy.org/cookbook/
转载http://jyd.me
源代码点此下载
- web.py的 cookie和session
- web-cookie和session
- Web编程-->Cookie和Session的区别
- WEB应用的session和cookie
- [py]图解cookie&session
- web.py下session初始化的问题
- web.py+sqlalchemy的session DBStore
- web.py 的session 没法使用吗?
- web开发 servlet下比较cookie和session的区别
- web.py session 应用
- Java Web中cookie和session详解
- web开发中的cookie和session
- web开发中的cookie和session
- Java Web中cookie和session详解
- Java Web中cookie和session详解
- Web会话技术Cookie和Session
- web中的session和cookie基本知识
- web前端——session和cookie
- ANDROID视图空间代码
- 1352 导弹部队又来了
- 1353 烹饪大赛
- 1354 新新约瑟夫
- 分布式中型文档存储系统MongoDB基础概念
- web.py的 cookie和session
- 1355 代码抄袭
- make file 样例
- poj 1852Ants
- string,wstring,CString,TCHAR,char*之间常用转换
- atof()
- 1356 好难啊
- 数据库对象
- C#之于DELPHI开发者(二)