跟用户名是“中文”的用户建立websocket连接报错

来源:9-14 前端WebSocket API讲解

爱编程的运维

2021-02-26

老师您好:

    问题描述:

    1. 我的用户创建的时候,有使用中文名字创建如下

http://img.mukewang.com/szimg/60385e08097bec4f10760334.jpg

2. 我在私信模块,给用户名是中文的用户建立websocket连接时,报错如下截图

http://img.mukewang.com/szimg/60385deb09bc26e415570899.jpg


请问老师这个如何解决?

写回答

3回答

爱编程的运维

提问者

2021-05-02

遗漏补充:

  1. 前端部分,把私信的url由用户名改成pk

    //img.mukewang.com/szimg/608e3f9d099b2c0a11210413.jpg

  2. 后端部分,修改messager/url.py

    //img.mukewang.com/szimg/608e3fcb0934fd7008850255.jpg

    这里原本是username 修改成 pk,正好跟前端的修改对应,获取前端传过来的pk值参数

  3. 后端部分,修改messager/views.py

    //img.mukewang.com/szimg/608e40250994ffc208570291.jpg

    第一个框框的值是后端传给前端的,修改成pk
    第二个框框是,根据前端传来的用户名查询对应的用户,现在修改成通过pk来查询。

0
2
请叫我滚去写代码
另外再补充: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)
2021-07-02
共2条回复

爱编程的运维

提问者

2021-05-02

老师,经过1一个多月的异步编程学习,我今天终于读懂了异步的代码,并且成功的把username修改成Pk

修改如下:

  1. 前端部分修改

    (1)修改base.html文件,修改截图如下
     //img.mukewang.com/szimg/608e32450911a99613460349.jpg

  2. 后端部分修改

    (1) 修改messager/views.py,截图如下:

    //img.mukewang.com/szimg/608e332109d2ca8913940380.jpg





        //img.mukewang.com/szimg/608e3b0b094f634f09300629.jpg

        (2) 修改messager/consumer.py

        //img.mukewang.com/szimg/608e3b770931a09c10680625.jpg


0
1
Jack
不错。继续加油!
2021-05-03
共1条回复

Jack

2021-03-02

您好,这个没法解决。不能使用中文,用用户的ID或者user_id字段,一般用户昵称还有重复的问题

0
0

Django高级实战 开发企业级问答网站

融合Django高级用法/算法/设计模式/TestCase测试/云计算打造项目

900 学习 · 756 问题

查看课程