web.py在SAE中的Session问题解决方法(使用mysql存储)

 更新时间:2015年06月24日 09:41:34   投稿:junjie  
这篇文章主要介绍了web.py在SAE中的Session问题解决方法(使用mysql存储),本文直接给出实现代码,代码中包含详细注释,需要的朋友可以参考下

这段时间一直想尝试着在SAE中使用Python,初步选择了Web.py框架做为开发框架,但是可怜SAE上的资料少的可怜,有点问题基本上解决不了,今天解决一个Session在Session的存储问题,在SAE中不能直接用本地文件存储,好像是权限的原因,我现在采用的是保存在mysql中,效果也不错。希望对大家有帮助。直接上代码了。

index.wsgi

#!/usr/bin/env python
# coding: utf-8
import os
import web
import sae
from config.url import urls
from config import settings
 
#是否具有调试功能
web.config.debug = False
# app = web.application(urls, globals()).wsgifunc()
# application = sae.create_wsgi_app(app)
 
#解决Session在SAE中的问题
app = web.application(urls, globals())
 
#将session保存在数据库中
db = settings.db
store = web.session.DBStore(db, 'sessions')
#session = web.session.Session(app, store, initializer={'access_token': 'true'})
session = web.session.Session(app, store)
web.config._session = session
 
application = sae.create_wsgi_app(app.wsgifunc())
url.py
#!/usr/bin/env python
# coding: utf-8
 
pre_fix = 'controllers.'
 
urls = (
  '/',          pre_fix + 'todo.Index',
  '/todo/new',      pre_fix + 'todo.New',
  '/todo/(\d+)',     pre_fix + 'todo.View',
  '/todo/(\d+)/edit',   pre_fix + 'todo.Edit',
  '/todo/(\d+)/delete',  pre_fix + 'todo.Delete',
  '/todo/(\d+)/finish',  pre_fix + 'todo.Finish',
  '/todo/login', pre_fix + 'login.LoginUser',
  '/todo/checkuser',pre_fix+'login.CheckUser',
  '/todo/reset',pre_fix+'todo.reset',
  '/todo/saveupload','mycontrollers.saveupload.SaveUpload'
)
setting.py
#!/usr/bin/env python
# coding: utf-8
import web
import sae.const
#数据库设定
db = web.database(dbn='mysql', user=sae.const.MYSQL_USER, pw=sae.const.MYSQL_PASS, host=sae.const.MYSQL_HOST, port=3307, db=sae.const.MYSQL_DB)
#模板设定
render = web.template.render('templates/', cache=False)
 
config = web.storage(
  email='oooo@qq.com<script cf-hash="f9e31" type="text/javascript">
/* <![CDATA[ */!function(){try{var t="currentScript"in document?document.currentScript:function(){for(var t=document.getElementsByTagName("script"),e=t.length;e--;)if(t[e].getAttribute("cf-hash"))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute("data-cfemail");if(a){for(e="",r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */</script>',
  site_name = '任务跟踪',
  site_desc = '',
  static = '/static',
)
 
web.template.Template.globals['config'] = config
web.template.Template.globals['render'] = render
login.py
#!/usr/bin/env python
# coding: utf-8
import web
from config import settings
render = settings.render
def myloadhook():
  global session
  session = web.config._session
class LoginUser:
  def GET(self):
    return render.LoginUser()
class CheckUser:
  def POST(self):
    #获取Session相关信息
    myloadhook()
    #获取表单信息
    i = web.input()
    username =i.get('txtUserName',None)
    password=i.get('txtUserPass',None)
    #从全局配置文件中得到session
    session = web.config._session
    if username == 'chu888' and password == 'chu888':
      session.access_token = 'true'
      raise web.seeother('/')
    else:
      session.access_token = 'false'
      raise web.seeother('/todo/login')

相关文章

  • Python使用jpype模块调用jar包过程解析

    Python使用jpype模块调用jar包过程解析

    这篇文章主要介绍了Python使用jpype模块调用jar包过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 利用python 更新ssh 远程代码 操作远程服务器的实现代码

    利用python 更新ssh 远程代码 操作远程服务器的实现代码

    这篇文章主要介绍了利用python 更新ssh 远程代码 操作远程服务器的实现代码,需要的朋友可以参考下
    2018-02-02
  • jupyter notebook 参数传递给shell命令行实例

    jupyter notebook 参数传递给shell命令行实例

    这篇文章主要介绍了jupyter notebook 参数传递给shell命令行实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python ndarray 数组的变形详情

    Python ndarray 数组的变形详情

    这篇文章主要介绍了Python ndarray数组的变形详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Python实现抓取网页并且解析的实例

    Python实现抓取网页并且解析的实例

    这篇文章主要介绍了Python实现抓取网页并且解析的功能实例,主要以解析百度问答为例说明其原理与方法,需要的朋友可以参考下
    2014-09-09
  • 浅谈Python之Django

    浅谈Python之Django

    这篇文章主要介绍了Python3中的Django,小编觉得这篇文章写的还不错,需要的朋友们下面随着小编来一起学习学习吧,希望能够给你带来帮助
    2021-10-10
  • Python3 Tensorlfow:增加或者减小矩阵维度的实现

    Python3 Tensorlfow:增加或者减小矩阵维度的实现

    这篇文章主要介绍了Python3 Tensorlfow:增加或者减小矩阵维度的实现,具有好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python使用pyppeteer模块实现无头浏览器自动化

    Python使用pyppeteer模块实现无头浏览器自动化

    pyppeteer是一个基于Python的模块,它提供了一个高级的API,可以通过控制无头浏览器来实现自动化网页操作,下面我们就来看看Python如何使用pyppeteer模块实现无头浏览器自动化吧
    2024-02-02
  • django-crontab实现服务端的定时任务的示例代码

    django-crontab实现服务端的定时任务的示例代码

    这篇文章主要介绍了django-crontab实现服务端的定时任务的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Python基于百度AI实现抓取表情包

    Python基于百度AI实现抓取表情包

    本文先抓取网络上的表情图像,然后利用百度 AI 识别表情包上的说明文字,并利用表情文字重命名文件,感兴趣的小伙伴们可以参考一下
    2021-06-06

最新评论