Django频道的HTTP帮助程序

lesync的Python项目详细描述


lesync

用于django-channels

的http帮助程序

你好,世界

fromlesyncimportlogin_required@login_requiredasyncdefhello(request):return{'hello':request.user.username}

安装

pip install lesync

ApiConsumer添加到routing.py

fromdjango.urlsimportpathfromchannels.routingimportProtocolTypeRouter,URLRouterfromchannels.sessionsimportSessionMiddlewareStackfromlesyncimportApiConsumerapplication=ProtocolTypeRouter({# ... websockets or something'http':SessionMiddlewareStack(URLRouter([path('/async/<path:path>',ApiConsumer),# ... fallback to sync views]),),})

就这样。现在您可以添加异步视图,这些视图将在win/async/url中提供服务 前缀。

请求

channels.http.AsgiRequest的子类,具有:

  • json属性
  • async load_user()方法-返回标准django用户
  • user属性-如果使用 @login_required@staff_member_required装饰器

响应

除了django.http.HttpResponse 您可以使用sugary json响应和流:

asyncdefstandard(request):returnHttpResponse('hello, world')asyncdefjson_data(request):return{'hello':'world'}asyncdefwith_status(request):return{'bad':'request'},400asyncdefwith_headers(request):return{},200,{'my':'header'}asyncdefstreaming(request):asyncdefstream():foriinrange(1,1000):yieldf'{i},{i**2}\n'awaitasyncio.sleep(.1)returnstream(),200,{'Content-Type':'text/csv'}

认证

熟悉的@login_required@staff_member_required装饰器:

fromlesyncimportstaff_member_required@staff_member_requiredasyncdefhello(request):return{'admin':request.user.username}

请求验证

您可以使用@validate_query@validate_json装饰符 以验证请求数据。他们正在使用trafaret库来执行 验证,请确保已安装。

fromlesync.trafaretimportvalidate_json@validate_json({'ids':[int],'hello?':str})asyncdeffoo(request):returnrequest.json

测试

    python -m venv .venv
    source .venv/bin/activate
    pip install -Ur requirements-dev.txt
    python -m pytest tests/

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

推荐PyPI第三方库


热门话题
带Maven的Eclipse Java存储库:缺少工件:compile   java如何以编程方式停止RMI服务器并通知所有客户端   java Roboguice抛出ClassNotFoundException:AnnotationDatabaseImpl   java为什么lucene 4.0删除IndexWriter类的两个构造函数?   nls如何避免java项目上不需要的日志消息?   测试无法在Selenium Webdriver(java)中定位iframe   使用XML的java servlet   java如何使用jxl用****屏蔽单元格   java使用SQLite从数据库中选择“没有这样的列”   导入扫描程序后出现java编译错误   插入查询的java空指针异常   使用创建PostgreSQL数据库。Java应用中的sql脚本   java使用jsoup将HTML解析为格式化的明文