要添加到api star的contrib包。
apistar-contrib的Python项目详细描述
API星形控制器
要添加到api star的contrib包。
- 自由软件:麻省理工学院许可证
- 文档:https://api-star-contrib.readthedocs.io。
功能
- CSRF令牌挂钩
- 本地会话存储(用于开发)
- 时区支持
- redis会话存储
待办事项
- 数据库会话存储
使用量
本地会话存储(用于开发)
fromapistarimportApp,Route,httpfromapistar_contrib.sessionsimportSession,SessionComponent,SessionHook,LocalMemorySessionStoredefuse_session(session:Session,params:http.QueryParams):forkey,valueinparams:session[key]=valuereturnsession.datadefclear_session(session:Session):session.clear()returnsession.dataroutes=[Route('/','GET',use_session),Route('/clear','GET',clear_session),]app=App(routes=routes,components=[SessionComponent(LocalMemorySessionStore)],event_hooks=[SessionHook])
redis会话存储
fromapistarimportApp,Route,httpfromapistar_contrib.sessionsimportSession,SessionComponent,SessionHook,RedisSessionStoredefuse_session(session:Session,params:http.QueryParams):forkey,valueinparams:session[key]=valuereturnsession.datadefclear_session(session:Session):session.clear()returnsession.dataroutes=[Route('/','GET',use_session),Route('/clear','GET',clear_session),]app=App(routes=routes,components=[SessionComponent(RedisSessionStore,'redis://localhost:6379/0')],event_hooks=[SessionHook])
CSRF令牌
importosfromapistarimportApp,Route,httpfromapistar_contrib.csrfimportEnforceCsrfHook,rotate_tokendefshow_form():returnapp.render_template('form.html',show_csrf=True,)defshow_no_csrf_form():returnapp.render_template('form.html',show_csrf=False,)defhandle_form(request:http.Request):# You should rotate CSRF tokens after successful login/logoutrotate_token(request)returnapp.render_template('form.html',show_csrf=True,success=True,)routes=[Route('/','GET',show_form),Route('/no_csrf','GET',show_no_csrf_form),Route('/handle','POST',handle_form),]BASE_DIR=os.path.dirname(__file__)TEMPLATE_DIR=os.path.join(BASE_DIR,'templates')app=App(routes=routes,event_hooks=[EnforceCsrfHook],template_dir=TEMPLATE_DIR,)
<!-- templates/form.html --><!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>CSRF Form</title></head><body><ul><li><ahref="{{ reverse_url('show_form') }}">Form with CSRF</a></li><li><ahref="{{ reverse_url('show_no_csrf_form') }}">Form without CSRF</a></li></ul> {% if success %}<h1>Successful POST</h1>{% endif %} <formaction="{{ reverse_url('handle_form') }}"method="post"> {% if show_csrf %} {{ csrf_token() }} {% endif %} <buttontype="submit">Submit form {% if show_csrf %}with{% else %}without{% endif %} CSRF</button></form></body></html>
学分
这个包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。
历史记录
0.0.6(2018-06-08)
- 将redis会话存储添加到自述文件和测试中
0.0.5(2018-05-19)
- 添加了redis会话存储
- 创建了第一个测试
0.0.4(2018-05-18)
- 删除默认组件
0.0.3(2018-05-18)
- 重构会话组件
0.0.2(2018-05-17)
- 添加CSRF令牌挂钩
0.0.1(2018-05-15)
- pypi上的第一个版本。