为django开发人员提供的基于websocket的聊天应用程序。

django-chatter的Python项目详细描述


Django颤音

<…图片:https://coveralls.io/repos/github/dibs-devs/chatter/badge.svg?branch=master :目标:https://coveralls.io/github/dibs-devs/chatter?分支=主节点

<…图片:https://travis-ci.org/dibs-devs/chatter.svg?branch=master :目标:https://travis-ci.org/dibs-devs/chatter rel="nofollow">https://travis ci.org/dibs-devs/chatter

<…图片:https://pepy.tech/badge/django-chatter/month :目标:https://pypi.org/project/django-chatter/" rel="nofollow">https://pypi.org/project/django-chatter/

django开发人员可重用的django聊天应用程序。

这里有完整的文档:django chatter docs<;https://django chatter.readthedocs.io>;<

聊天是目前许多web应用的一个重要方面。 然而,django的包存储库没有维护良好的可重用聊天 Django开发人员可以集成到其平台中的软件包。

Django Chatter就是想改变这种状况。这是一个开源的完全可重用的聊天 具有支持群组聊天机制的应用程序。

这个应用程序的html前端是用flexbox构建的,使它能够响应 多个视口。

[还有更多工作要做]除此之外,它还可以用作rest api, 因为所有视图都生成标准的json响应,需要由 使用此软件包的应用程序前端提供WebSocket。

此应用程序使用django channels 2<;http://channels.readthedocs.io>;\ redis<;https://redis.io/>;作为消息代理。

要正确运行django chatter,需要python>;=3.5和redis。注意: 对于开发,我们目前使用的是从源代码构建的redis-5.0.3。 ubuntu机器。

颤振的核心机制遵循 django channels<;https://channels.readthedocs.io/en/latest/>;教程部分, 添加了一些修改和主题。


安装

  • Chatter现在打开pypi<;https://pypi.org/project/django chatter/>;! 要安装它,请运行

    <…代码块::python

    pip安装django chatter

    这将安装Chatter所需的所有依赖项。

  • 完成后,将其添加到您的:code:设置中。已安装的应用程序

    <…代码块::python

    已安装的应用程序=[ … "Django_Chatter", …

  • 因为我们使用redis作为消息代理,所以需要启用通道层 聊天室的聊天消费者 (请参见channels'consumers<;https://channels.readthedocs.io/en/latest/topics/consumers.html>;。_ 更多细节)。要启用它,您需要将以下行添加到 您的项目:code:settings.py文件:

    <…代码块::python

    频道层{ "默认":{ '后端':'频道'redis.core.redischannellayer', "CONFIG":{ "主机":[('127.0.0.1',6379)], }, }, }

  • 如果还没有,请在 项目的配置文件夹。 这是因为django通道使用名为 asgi<;https://channels.readthedocs.io/en/latest/asgi.html>;。_ 它的websocket协议。若要在应用程序上启用频道,必须添加 将所有websocket请求路由到channels应用程序的文件 (在这种情况下,是颤音)。 这应该与您的文件夹相同:code:settings.py 文件已找到。

    in:代码:routing.py,添加以下行:

    <…代码块::python

    从channels.auth导入authmidlewarestack 从channels.routing导入protocoltyperouter,urlrouter 导入django_chatter.routing

    应用程序=ProtocolTypeRouter({ "websocket":authmidlewarestack( URLRouter django_chatter.routing.websocket_urlpatterns将websocket请求发送到chatter的url ) ) }

    这会将所有websocket请求路由到chatter,并登录:code:用户 对象。如果你使用不同的 django channels<;https://channels.readthedocs.io/en/latest/>;。_ 除了chatter之外的应用程序,您可能已经拥有此文件,并且可以添加 Chatter要处理的适当URL。 更多详情请访问Django频道 路由<;https://channels.readthedocs.io/en/latest/topics/routing.html>;页面。

    如果您知道中间件是如何包装的 频道<;https://github.com/django/channels/blob/master/channels/auth.py>;。_ 可以,然后可以随意替换:code:authMiddleWareStack 作为用户对象处理的身份验证中间件(如果您想知道 关于这个,联系吧!我们很乐意与您讨论此事。

  • 现在您已经完成设置:code:routing.py,在 您的:code:settings.py文件链接到routing.py 如果您已经在使用频道,则已执行此操作)

    <…代码块::python

    asgi_application='<;项目名称>;.routing.application'

  • Chatter使用上下文处理器生成用户的所有房间的列表 是的成员。若要使用此上下文处理器,请将其添加到:code:模板 在您的:code:settings.py中列出 <…代码块::python

    模板=[ { … "选项":{ "上下文处理器":[ … 'django_chatter.context_processors.get_chatterom_list', … , }, },

  • 链接:code:django_au chatter.url urlconf(:code:<;project>;/url.py)。

    示例:

    <…代码块::python

    从django.url导入路径,include

    < >… urlpatterns模式=[ … 路径('chat/',include('django_chatter.url'), …

  • 运行迁移:

    <…代码块::bash

    $python manage.py生成免费聊天 $python manage.py迁移

  • 启动应用程序的开发服务器并转到:code:'/chat/'url, 您将看到Chatter的主页。

尚未为此包设置测试。我以前建立过这个应用程序 我知道什么是好的测试方法。所以,欢迎考试!


使用说明

  • Chatter,从现在起,为用户提供了一个非常小的聊天界面 与其他用户一起使用。首先,该模型支持组聊天 层、相应的模板和前端逻辑尚未设置。

  • 如果你在自己的应用程序中使用chatter作为包,你必须确保 在应用程序中处理用户身份验证。默认情况下,Chatter提供 需要用户身份验证的视图。如果你在另一个上面聊天 手,用法会有点不同。注释可以在 参与<;https://django chatter.readthedocs.io/en/latest/templates/develop.html>;。_ 部分:


要添加的功能的运行列表

  • 在模板上为用户添加"创建组"选项
  • 添加"由用户X查看"功能

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

推荐PyPI第三方库


热门话题
我可以用C++代码使用java代码吗?   java使用JSR303在派生类中提供更具体的约束   java在这个查找唯一路径数算法中我做错了什么?   java如何为2个不同的服务提供商使用2个不同的SSL证书?   java在Gridview上绘制文本   java使用连接for循环构建字符串名   java StringBuilder拆分无法处理某些文件   java事件关注EditText   Java Web Start“找不到URL的缓存资源”   java程序从命令行运行的速度比在Eclipse中慢   java为什么HttpServletRequest会截断#字符上的url输入?   java自定义折叠工具栏平滑标题大小调整   使用Mockito对安卓 java中调用另一个静态函数的函数进行单元测试   http在java客户机中使用cachecontrol头   java如何使用。是否使用Delimiter从输入文件中排除标点符号和数字?   使用上下文作为参数/参数的java   java更有效地从Jar中提取文件   java为多个JButton提供相同的actionListener