要添加到api star的contrib包。

apistar-contrib的Python项目详细描述


API星形控制器

https://img.shields.io/pypi/v/apistar-contrib.svghttps://img.shields.io/travis/ryananguiano/apistar-contrib.svgDocumentation StatusUpdates

要添加到api star的contrib包。

功能

  • 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>

学分

这个包是用Cookiecutteraudreyr/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上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android编程存储的图像在PC上的格式无效   安卓无法通过Java代码使按钮变宽   java在Spring事务中的行为差异需要新的和嵌套的传播   java如何在Ubuntu上构建javafuse?   java不支持Eclipse包包含javac。exe   读取大文件时java StAX解析器的xml问题   连接到mysql时java通信链路故障   java WebSphere web容器线程的最大线程状态为runnable   为什么我需要添加双引号来打印java中字符数组的第一个和最后一个元素   java Hibernate在更新现有父实体时不创建新的子实体   java创建JSON格式输出   java SonarQube与Eclipse   无法从静态上下文引用java非静态方法toString   java位集向后显示值?   java为什么maven不从TestClass生成源代码?   java在实践中,在catch块中抛出异常是否有用?   java如何通过FileinputStream添加还原设置功能   java复制记事本中的所有内容并粘贴到网页的文本区域