chaleaoch

chaleaoch 查看完整档案

大连编辑辽宁大学  |  电子信息科学与技术 编辑SbiBits  |  python开发工程师 编辑 chaleaoch.com 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

chaleaoch 回答了问题 · 2020-11-12

Django View层公共类调用的问题?

全局变量对于单进程http服务器来说只实例化一次没毛病.你放到login里面就好了

from api_response.api_response import ApiResponse

def login(request):
    response = ApiResponse()
    if request.method == "POST"
    #code....
        return response.success("登录成功")
    else:
        return response.fail("不支持的方法")

关注 2 回答 1

chaleaoch 提出了问题 · 2020-05-22

python中a=1是原子操作吗?

如何判断一个操作是原子操作?

PyDev console: starting.
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
import dis
dis.dis('a = 1')
  1           0 LOAD_CONST               0 (1)
              2 STORE_NAME               0 (a)
              4 LOAD_CONST               1 (None)
              6 RETURN_VALUE

关注 2 回答 1

chaleaoch 提出了问题 · 2020-02-04

django orm 抽象继承可以继承多个类吗?

比如

class A(Model):
    class Meta:
        abstract = True
class B(Model):
    class Meta:
        abstract = True
class C(A,B):
    pass

A,B 都是抽象model, 这样行吗?

另外, 多表继承可以这样写吗? 多重继承.

关注 1 回答 0

chaleaoch 提出了问题 · 2019-12-03

请教 rest api 如何设计+django rest_framework 如何实现?

  • Root

    • router1

      • category1

        • interface1

          • prefix1
          • prefix2
        • interface2

          • prefix21
      • category2
    • router2

      • category21

大概是这样一个结构. 其中 category 可忽略.

获取 router 信息
get */api/routers/

default_router.register(
    "api/routers", RouterViewset, base_name="RouterViewset"
)

获取 category summary 信息
get */api/routers/category_summary
在 RouterViewset 中定义

    @detail_route(methods=["get"])
    def category_summary(self, request, router_id):
        pass

获取某个 router 中的 interface 信息
是这么写吧?
get */api/routers/<router_id>/interfaces
这样实现

    @detail_route(methods=["get"])
    def interfaces(self, request, router_id):
        pass

还是这么写?
get */api/interfaces/?router-id=<id>

default_router.register(
    "api/interfaces", InterFaceViewset, base_name="InterFaceViewset"
)

以此类推 prefix 如何设计 api 同时如何用 drf 的 router 和 viewset 实现?
譬如
*/api/routers/<router_id>/interfaces/<interface_id>/prefixes
类似这样吗?

default_router.register(
    "routers/(?P<router_id>\d+)/interfaces/", InterFaceViewset, base_name="EmixInterFaceViewset"
)

    @detail_route(methods=["get"])
    def prefixes(self, request, router_id, interface_id):
        pass

上面的 url 岂不是被覆盖了?
因为:

 "routers/(?P<router_id>\d+)/interfaces/", InterFaceViewset, base_name="EmixInterFaceViewset"

get `*/api/routers/`

default_router.register(
    "api/routers", RouterViewset, base_name="RouterViewset"
)

之间有重复

关注 2 回答 0

chaleaoch 赞了回答 · 2019-11-27

解决关于python元类遇到冲突问题的问题(Metaclass conflict)?

针对这个代码解释错误信息:“B的metaclass必须是所有B的父类(这里只有test1)的metaclass的子类(但不一定要求是直接子类)”。

从字面上理解就可以找到解决办法:

class bMetaClass(ABCMeta, UpperAttrMetaclass):
    pass

b = bMetaClass('hehe', (test1,), {})()

关注 2 回答 1

chaleaoch 关注了专栏 · 2019-09-19

倚楼听风雨

学习、分享

关注 40

chaleaoch 提出了问题 · 2019-09-18

chrome和firefox对websocket的处理不一样,是chrome的问题还是firefox的问题?

问题描述

图片描述
图片描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

前端代码

    var roomName = {{ room_name_json }};

    if (window.location.protocol == 'https:') {
        var chatSocket = new WebSocket('wss://' + window.location.host + '/ws/chat/' + roomName + '/');
    } else {
        var chatSocket = new WebSocket('ws://' + window.location.host + '/ws/chat/' + roomName + '/');
    }

    chatSocket.onmessage = function (e) {
        var data = JSON.parse(e.data);
        var message = data['message'];
        document.querySelector('#chat-log').value += (message + '\n');
    };

    chatSocket.onclose = function (e) {
        console.error('Chat socket closed unexpectedly');
    };

    $('#chat-message-submit').click(function () {
        $.get(window.location.origin + "/chat/test/" + roomName, function (data) {
            console.log(data);
        });
    });

后端代码

def test(request, room_name):
    import websocket
    import time
    import ssl
    from django.conf import settings
    is_https = getattr(settings, 'IS_HTTPS', False)
    ws = websocket.WebSocket(sslopt={"cert_reqs": ssl.CERT_NONE})
    if is_https:
        ws.connect("wss://127.0.0.1/ws/chat/{}/".format(room_name))
    else:
        ws.connect("ws://127.0.0.1/ws/chat/{}/".format(room_name))

    # time.sleep(6)
    ws.send(json.dumps("Hello, World1"))
    time.sleep(6)
    ws.send(json.dumps("Hello, World2"))
    time.sleep(6)
    ws.send(json.dumps("Hello, World3"))
    time.sleep(6)
    ws.close()
    return JsonResponse(666, safe=False)

你期待的结果是什么?实际看到的错误信息又是什么?

firefox的结果是对的.
chrome感觉像是在哪里堵住了并行变串行了.想知道如何处理这个问题?

关注 1 回答 0

chaleaoch 发布了文章 · 2019-09-09

十年老码农的昨天,今天,和明天

写下属于你的编程故事:标题不限,文体不限,语言不限,字数不限,自由发挥
以 “一起分享你的故事”为文章唯一标签,且在文章末尾注明:

  • 介绍一下自己(尺度自己掌握哦 - 几套房几辆车什么的就不用说出来扎小姐姐的心了)
    十年老码(准确的说11年了),画过电路板(烧坏好几个FPGA),干过嵌入式(打杂的),测过驱动(用应用程序),写过case(为后来的python开发打下不怎么坚实的基础), 目前在一家硬件设备生产厂商做"运维"开发.
  • 聊一聊你作为程序员遇到的有趣事儿/难过事儿/尴尬事儿/随便什么事儿~
  • 作为一个搞技术的优秀人才,是怎样提高自己的战斗力的呢?

    1. 看代码
      1.1 如果工作的项目代码质量一般,考虑看开源代码.
      1.2 框架源码和应用源码各有各的用处,不一定说非要看框架源码.甚至有时候,看应用的源码收货更大.
      1.3 自己造轮子,比阅读框架源码慢,但是有不一样的收获,最起码记得牢...
    2. 认真工作
      其实,就算每天敲业务,也是有收货的,关键还是你自己.
      譬如,我在给同事做code review的时候,就会发现一些我自己没做过的需求.
      很多公司的项目都挺坑的,我们可以锻炼自己的抗坑(kangkeng)能力.
    3. 如果到了后期(5-10年),可以关注某Q,等偏架构方向的领域,看看目前行业动态,但是不要盲目追求热点.
    4. 重视基础,越到后期基础越重要.
  • 有木有哪些经验可以送给即将踏入程序员大军的小宝贝们呀?

    • 趁年轻,好好学习,等岁数大了,记忆力就下降了,最重要的是,结婚了,四个老人一个孩子,都是牵扯精力的.
    • 相信时间的力量
      就是所谓的复利,如果把时间拉长, 时间的力量真的很吓人.
  • 如果还有一次选择职业的机会,你还会选程序员吗?为什么?
    会,因为我喜欢写代码
  • 嗯...你喜欢吃什么馅儿的月饼?
    五仁和什锦是我的最爱.
本文参与了 SegmentFault思否征文「一起分享你的故事」,欢迎正在阅读的你也加入,分享你的故事。
查看原文

赞 3 收藏 0 评论 1

chaleaoch 分享了头条 · 2019-08-03

很好的免费基础入门课程

赞 0 收藏 0 评论 0

chaleaoch 赞了问题 · 2019-08-03

解决django不使用外键怎么实现INNER JOIN

现在有两个数据表:

class Goods(models.Model):
    """商品表"""
    name = models.CharField('名称', max_length=50)
    num = models.IntegerField('数量', default=0)
    shop_id = models.IntegerField('店铺ID')

class Shop(models.Model):
    """店铺表"""
    name = models.CharField('店铺名称', max_length=50)
    reputation = models.SmallInteger('店铺信誉', default=1, help_text='范围:1~5')

查询商品的时候希望通过商品数量和店铺信誉进行联合排序,SQL是这样的:

SELECT
    goods.id,
    goods.num,
    shop.reputation
FROM
    goods
    INNER JOIN shop
        ON goods.shop_id = shop.id
ORDER BY
    goods.num DESC,
    shop.reputation DESC

这两张表只进行了逻辑关联,没有建立外键。上面的SQL查询怎么通过django ORM实现?

关注 2 回答 2

认证与成就

  • 获得 21 次点赞
  • 获得 24 枚徽章 获得 0 枚金徽章, 获得 6 枚银徽章, 获得 18 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2015-10-24
个人主页被 1.2k 人浏览