采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好:
问题描述:
1. 我的用户创建的时候,有使用中文名字创建如下
2. 我在私信模块,给用户名是中文的用户建立websocket连接时,报错如下截图
请问老师这个如何解决?
遗漏补充:
前端部分,把私信的url由用户名改成pk
后端部分,修改messager/url.py
这里原本是username 修改成 pk,正好跟前端的修改对应,获取前端传过来的pk值参数
后端部分,修改messager/views.py
第一个框框的值是后端传给前端的,修改成pk第二个框框是,根据前端传来的用户名查询对应的用户,现在修改成通过pk来查询。
兄弟,我昨天也发现不能中文用户名的情况,具体情况就是:中文用户名可以正常给其他英文用户名的用户发消息,但是反过来不行。根据你的方法我都改成了pk,但不知道是我漏了什么东西,虽然可以实现可以互发消息,但是必须得刷新网页才能出来新消息,搞了几个小时没弄好,今早起来又弄了一会,经过反复debug测试发现问题出在哪了。有个更简单的方法,也不需要改那么多东西。 方法:打开messager/views.py 在代码async_to_sync(channel_layer.group_send)(recipient_username, payload) 改成 async_to_sync(channel_layer.group_send)(slugify(recipient_username), payload) 其实就是把接收方的用户名用slugify转成英文拼接的就可以了 同时希望能有帮助到其他老哥
另外再补充:consumer.py里的group_add和group_discard方法里的用户名也需要用slugify转一下 await self.channel_layer.group_add(slugify(self.scope['user'].username), self.channel_name) await self.channel_layer.group_discard(slugify(self.scope['user'].username), self.channel_name)
老师,经过1一个多月的异步编程学习,我今天终于读懂了异步的代码,并且成功的把username修改成Pk
修改如下:
前端部分修改
(1)修改base.html文件,修改截图如下
后端部分修改
(1) 修改messager/views.py,截图如下:
(2) 修改messager/consumer.py
不错。继续加油!
您好,这个没法解决。不能使用中文,用用户的ID或者user_id字段,一般用户昵称还有重复的问题
登录后可查看更多问答,登录/注册
融合Django高级用法/算法/设计模式/TestCase测试/云计算打造项目
2.6k 15
7.6k 1
2.3k 6
1.6k 4
1.8k 2