首页>>后端>>Python->一个django项目多久(2023年最新整理)

一个django项目多久(2023年最新整理)

时间:2023-12-07 本站 点击:0

导读:很多朋友问到关于一个django项目多久的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

用Django开发web后端,真的比SpringBoot要省事吗?

用Django开发web后端并不比SpringBoot要省事。

spring好处就是当你需要消息队列,或者服务注册发现,配置中心等等的时候配置比较方便,如果不考虑微服务,spring boot也只是比java世界里面其他的方便而已。

而python世界想要集成上述几个功能并且达到一定的生产级别是要比spring麻烦的多。

从性能上讲,看过一些测评,spring因为替用户做了很多类型推断的事情,纯性能在java世界也就是稀烂。

python如果不是一开始就上pypy,那就是一个jit的性能差距,大概就是十倍吧。

最后讨论下针对软件开发。

java它就是消耗代码,完成同样功能谁需要写的代码更多就更耗时,显然go是要少些不少代码。

而我的理解上,python需要1完成的东西go得1.5以上 java到2以上,显然耗费的时间也就是基于这个比例。

对于个人心智负担范围内的项目,我是没什么理由选择java的,因为代码行数就是时间,时间就是金钱。

而对于不写测试设计稀烂的项目,这锅java也背不住。所以吧,如果不是个大项目,感觉并不太需要java出马以及,除非是有些必然要选择的原因。

至于大项目,这事我还没真没啥概念,大致统计了下以前项目的有效代码,不算注释第三方库,现在公司两三年的项目多端前后台加起来也就是20来万行。这也就算是我碰到现在规模最大的了。

剩下的曾经有个创业项目做了三个月差不多前后台也就是三万多行。

最后说结论吧,项目小,周期短,投入少,还是就django吧。

django框架介绍

Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。

另外,在Dj ango框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。

Django 框架的核心组件有:

1、用于创建模型的对象关系映射。

2、为最终用户设计较好的管理界面。

3、URL 设计。

4、设计者友好的模板语言。

5、缓存系统。

Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。

Django 根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。

由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SD Times评选为2013 SD Times 100,位列“API、库和框架”分类第6位,被认为是该领域的佼佼者。

Django开发网站要多久

django不难,难在网站的美化和用户体验优化。我目前学django一个月,开发一个视频类网站,算是做了一个demo版本了,各功能可以正常运行,但是遇到以下问题需要解决:

网站美化:css,bootstrap,js等不知道如何和django的表单最大限度融合使用。我目前的感觉是如果使用js,就必须自己在模板中写表单。

功能拓展:django虽说是一个强大的框架,但是还是有很多地方需要自己定制。比如用户登陆系统,django自身比较简单,而第三方的app虽然功能完善,但是其帮助文档一般是2句话说完,对于新手实在门槛过高。

Django源码阅读 (一) 项目的生成与启动

诚实的说,直到目前为止,我并不欣赏django。在我的认知它并不是多么精巧的设计。只是由功能堆积起来的"成熟方案"。但每一样东西的崛起都是时代的选择。无论你多么不喜欢,但它被需要。希望有一天,python能有更多更丰富的成熟方案,且不再被诟病性能和可维护性。(屁话结束)

取其精华去其糟粕,django的优点是方便,我们这次源码阅读的目的是探究其方便的本质。计划上本次源码阅读不会精细到每一处,而是大体以功能为单位进行解读。

django-admin startproject HelloWorld 即可生成django项目,命令行是exe格式的。

manage.py 把参数交给命令行解析。

execute_from_command_line() 通过命令行参数,创建一个管理类。然后运行他的 execute() 。

如果设置了reload,将会在启动前先 check_errors 。

check_errors() 是个闭包,所以上文结尾是 (django.setup)() 。

直接看最后一句 settings.INSTALLED_APPS 。从settings中抓取app

注意,这个settings还不是我们项目中的settings.py。而是一个对象,位于 django\conf\__init__.py

这是个Settings类的懒加载封装类,直到 __getattr__ 取值时才开始初始化。然后从Settings类的实例中取值。且会讲该值赋值到自己的 __dict__ 上(下次会直接在自己身上找到,因为 __getattr__ 优先级较低)

为了方便debug,我们直接写个run.py。不用命令行的方式。

项目下建个run.py,模拟runserver命令

debug抓一下setting_module

回到 setup() 中的最后一句 apps.populate(settings.INSTALLED_APPS)

开始看 apps.populate()

首先看这段

这些App最后都会封装成为AppConfig。且会装载到 self.app_configs 字典中

随后,分别调用每个appConfig的 import_models() 和 ready() 方法。

App的装载部分大体如此

为了方便debug我们改写下最后一句

res的类型是 Command django.contrib.staticfiles.management.commands.runserver.Command object at 0x00000101ED5163A0

重点是第二句,让我们跳到 run_from_argv() 方法,这里对参数进行了若干处理。

用pycharm点这里的handle会进入基类的方法,无法得到正确的走向。实际上子类Commond重写了这个方法。

这里分为两种情况,如果是reload重载时,会直接执行 inner_run() ,而项目启动需要先执行其他逻辑。

django 项目启动时,实际上会启动两次,如果我们在项目入口(manage.py)中设置个print,会发现它会打印两次。

第一次启动时, DJANGO_AUTORELOAD_ENV 为None,无法进入启动逻辑。会进入 restart_with_reloader() 。

在这里会将 DJANGO_AUTORELOAD_ENV 置为True,随后重启。

第二次时,可以进入启动逻辑了。

这里创建了一个django主线程,将 inner_run() 传入。

随后本线程通过 reloader.run(django_main_thread) ,创建一个轮询守护进程。

我们接下来看django的主线程 inner_run() 。

当我们看到wsgi时,django负责的启动逻辑,就此结束了。接下来的工作交由wsgi服务器了

这相当于我们之前在fastapi中说到的,将fastapi的app交由asgi服务器。(asgi也是django提出来的,两者本质同源)

那么这个wsgi是从哪来的?让我们来稍微回溯下

这个settings是一个对象,在之前的操作中已经从 settings.py 配置文件中获得了自身的属性。所以我们只需要去 settings.py 配置文件中寻找。

我们来寻找这个 get_wsgi_application() 。

它会再次调用 setup() ,重要的是,返回一个 WSGIHandler 类的实例。

这就是wsgiapp本身。

load_middleware() 为构建中间件堆栈,这也是wsgiapp获取setting信息的唯一途径。导入settings.py,生成中间件堆栈。

如果看过我之前那篇fastapi源码的,应该对中间件堆栈不陌生。

app入口→中间件堆栈→路由→路由节点→endpoint

所以,wsgiapp就此构建完毕,服务器传入请求至app入口,即可经过中间件到达路由进行分发。

用django建一个简单的购物网站需要多久

那个很快啊,简单的,当然每个人简单标准不一样,要进行页面丰富好看的话工作量稍微多些,写代码写得多的话就快点,几个小时就可以完成,不会写代码的也许得一周或者更久了,技术问题不会的俺可以代做

结语:以上就是首席CTO笔记为大家整理的关于一个django项目多久的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于一个django项目多久的相关内容别忘了在本站进行查找喔。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/18482.html