开发者社区> 楚广明> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

解决web.py在SAE云中的Session使用问题

简介: 这段时间一直想尝试着在SAE中使用Python,初步选择了Web.py框架做为开发框架,但是可怜SAE上的资料少的可怜,有点问题基本上解决不了,今天解决一个Session在Session的存储问题,在SAE中不能直接用本地文件存储,好像是权限的原因,我现在采用的是保存在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',
    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')

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Sentry(v20.12.1) K8S 云原生架构探索, SENTRY FOR JAVASCRIPT 手动捕获事件基本用法
Sentry(v20.12.1) K8S 云原生架构探索, SENTRY FOR JAVASCRIPT 手动捕获事件基本用法
46 0
Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解(一)
Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解(一)
95 0
Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解(二)
Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解(二)
83 0
Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之管理 Transactions
Sentry(v20.12.1) K8S 云原生架构探索,JavaScript 性能监控之管理 Transactions
76 0
Embedded web server initialization - jar file default-mimetypes.properties
Embedded web server initialization - jar file default-mimetypes.properties
37 0
JavaWeb之session应用
session和cookie都是用来存储信息的,区别是session是在服务器端存储信息,而cookie则是在浏览器端存储信息。 通常服务器端存储session,服务器端存储和获取session,一般情况下是比较安全的,不排除黑客侵袭的情况下。
1147 0
初识docker—创建WEB应用容器1python+flask
初识docker—创建WEB应用容器1python+flask Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。
1917 0
高性能web建站规则(精简js)
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/80123877 我们经常见到jquery.js和jquery.min.js,后者是精简后的js,体积更小,也就意味着减少了服务器到客户端的加载压力,很显然可以提升web性能。
723 0
对Web开发人员有用的8个网站
译文出自:伯乐在线---敏捷翻译组---魏哲
571 0
+关注
楚广明
10年导入咨询顾问经验,敏捷中国 第一届中国高峰会讲员,行业实施:中国移动、中华联合保险、中国民航信息 ANZ 澳新银行、戴姆勒奔驰汽车、广州证券、浦发银行、爱德万测试、蔚来汽车、清华大学、努比亚、顺丰速运、迅雷、时趣互动......等企业 Atlassian 敏捷项目
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《Serverless 应用全生命周期管理工具:Serverless Devs 2.0》
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载