要添加到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找不到当前线程的会话   同步Java同步方法调用非同步方法   这段代码的java时间复杂度是如何列出一个集合的所有子集的?   java Jetty SslConnectionFactory nextProtocol   为什么在java集合中使用游标而不是for循环   java如何对长函数进行单元测试?   如何从java中的文本输入创建数组   java工具栏内容未显示,尽管出现了片段内容   java MediaPlayer无法处理本地文件   java在多次读取时,从TCP服务器读取的数据将挂起   java组织。springframework。数据领域无法将PageImpl强制转换为   java如何使用@WithMockUser并从属性文件中传递用户名和密码?   JavaSpringBootGradle插件2。x如何使用自定义启动器布局工厂   sockets Java客户端和服务器之间使用字符串等进行通信的“行业标准”方法是什么   java变量引用不存在的资源:${project\u loc:project\u name}   搜索如何返回LDAP Java中所有用户的特定属性?   JDK1.8.016x的java密钥斗篷代理问题   spring如何使用Java中的Exchange获取邮件   java Kotlin+Dagger 2:Dagger*文件不会生成   如何在传入的double上执行操作,然后在Java中返回