【知乎答题计划】企业使用django一般会对哪些部分进行二次开发?

栏目: Python · 发布时间: 7年前

内容简介:每天抽点时间,力所能及地认真回答一两个问题。 欢迎关注、提问、邀请。知乎问题:在最早之前,我们是对 Django 自带的 Admin 做了深入开发,其实也是基于它原本的逻辑,定制了CAS 认证的部分和基础的模板。 再往后我们开始使用 xadmin ,直接替代了 Django 自己的 Admin,不过即便是使用了 xadmin 也需要进行定制开发。 不过无论是对于 Django 还是 xadmin 来说,都提供了对应的接口,可以让程序员直接进行定制。对于一个通用的(Web)框架来说,不可能满足所有的需求,定制

每天抽点时间,力所能及地认真回答一两个问题。 欢迎关注、提问、邀请。

知乎问题: 企业使用django一般会对哪些部分进行二次开发?

在最早之前,我们是对 Django 自带的 Admin 做了深入开发,其实也是基于它原本的逻辑,定制了CAS 认证的部分和基础的模板。 再往后我们开始使用 xadmin ,直接替代了 Django 自己的 Admin,不过即便是使用了 xadmin 也需要进行定制开发。 不过无论是对于 Django 还是 xadmin 来说,都提供了对应的接口,可以让 程序员 直接进行定制。对于一个通用的(Web)框架来说,不可能满足所有的需求,定制是不可避免的,就看定制的难度了。

这方面 Django 和 xadmin 做的都不错(对xadmin来说,可能你能读懂他的源代码后,会觉得,嗯,也是不错的)。 比方说题主说的中间件的部分,其实你看他的 Middleware 的实现就知道了,只需要实现对应的接口,也就是你的类实现了 _call_ 像这样:

class SimpleMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        # One-time configuration and initialization.

    def __call__(self, request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.

        response = self.get_response(request)

        # Code to be executed for each request/response after
        # the view is called.

        return response

在通过settings.py进行配置,就ok了。比较友好。

定时任务方面,Django 本身没有这个功能,我们用过的是跟 Celery 结合。不过多机部署需要注意,要自己加锁: Task Cookbook - Celery 4.2.0 documentation 保证每次只有一个定时任务执行。

另外还有比如你要做RESTFul 接口时可能需要用到的:django-rest-framework,以及做搜索时的 django-haystack 等。

二次开发是不可避免的,强大的框架应该提供友好的定制机制,以及丰富的生态。

- from the5fire.com

----EOF-----

微信公众号:Python程序员杂谈

【知乎答题计划】企业使用django一般会对哪些部分进行二次开发?

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

挑战编程

挑战编程

斯基纳 / 刘汝佳 / 2009-7 / 39.00元

《挑战编程:程序设计竞赛训练手册》分为14章,分别介绍在线评测系统的基本使用方法、数据结构、字符串、排序、算术与代数、组合数学、数论、回溯法、图遍历、图算法、动态规划、网格、几何,以及计算几何,并在附录中介绍了一些著名的程序设计竞赛以及相应的备赛建议与比赛技巧。每章的正文用十余页的篇幅覆盖了该领域最核心的概念和算法,然后给出八道可在线提交的完整编程挑战题目供读者练习。 全书内容紧凑、信息量大......一起来看看 《挑战编程》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码